#c
#c
Вопрос:
Я пытаюсь распечатать каждый char
из них в s
массиве по одному. Программа, которую я напечатал, все буквы после определенного индекса в массиве.
Проблема, с которой я сталкиваюсь, заключается в том, что после этого пользователь вставляет фразу, после чего она выделяется. Как вы вызываете буквы из строки, используя указатели?
Можете ли вы использовать strtok
для разделения этой строки, я попытался установить значение delim
«», но не получил результата. Другими словами, сделайте это списком, как в Python split()
.
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
char *s;
s = malloc(1024 * sizeof(char));
scanf("%[^n]", s);
s = realloc(s, strlen(s) 1);
//printf("%s n", s);
for (int i = 0 ; i <strlen(s); i ){
printf("%s n", amp;s[i]);
}
return 0;
}
Комментарии:
1. Почему вы используете
%s
для печати один символ?2.
for (int i = 0; s[i] != ''; i ) printf("%cn", s[i]);
?3. что я должен использовать,
%ch
?4. Вы должны использовать
%c
5. И использовать
s[i]
, неamp;s[i]
Ответ №1:
printf("%cn", s[i]);
или
printf("%cn", *(s i));
Комментарии:
1. можете ли вы объяснить второе
printf
утверждение, почему вы написали*(s i)
2. Потому что
s[i] = *(s i)
3. Они эквивалентны. S имеет адрес первого элемента массива, вы суммируете i позиций с этим, а затем получаете доступ к значению, которое было сохранено в этой позиции.
Ответ №2:
len = strlen(s);
for (int i = 0 ; i < len; i ){
printf("%cn", s[i]);
}
Ответ №3:
int main()
{
char *s;
s = malloc(1024 * sizeof(char));
scanf("%[^n]", s);
s = realloc(s, strlen(s) 1);
for (int i = 0; s[i] != ''; i )
{
printf("%c n", s[i]);
}
return 0;
}