#arrays #c #string #loops
Вопрос:
char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
for(int x = 0; x<testArray; x ){
printf("%s", testArray[x]);
}
Я пытаюсь найти все способы печати строк с помощью циклов на языке си. Любая помощь была бы очень признательна. Спасибо.
Комментарии:
1. То, что ты написал, не работает.
%c
требует , чтобы аргумент был achar
, ноtestArray[x]
естьchar[50]
.
Ответ №1:
Условие в вашем цикле for неверно. Там сравнивается целое число с указателем.
for(int x = 0; x<testArray; x ){
^^^^^^^^^^^
Также вызов printf
вызывает неопределенное поведение, поскольку для вывода строки используется неверный спецификатор преобразования.
printf("%c", testArray[x]);
^^^^
Ты мог бы написать
char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
const size_t N = sizeof( testArray ) / sizeof( *testArray );
for ( size_t i = 0; i < N; i )
{
printf( "%sn", testArray[i] ); // or just puts( testArray[i] );
}
Комментарии:
1. Спасибо, человек, помоги мне очень сильно.
Ответ №2:
если вам нужны указатели:
#define TSIZE(x) (sizeof(x) / sizeof((x)[0]))
int main(void) {
char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
for(char (*x)[50] = testArray; x < amp;testArray[TSIZE(testArray)]; x ){
printf("%sn", *x);
}
}
или вы хотите использовать %c
формат:
int main(void) {
char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
for(char (*x)[50] = testArray; x < amp;testArray[TSIZE(testArray)]; x )
{
char *p = x[0];
while(*p)
printf("%c", *p );
printf("n");
}
}
Комментарии:
1. Большое спасибо за разъяснение.