Каковы все способы печати строк с помощью цикла в c

#arrays #c #string #loops

Вопрос:

 char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};

for(int x = 0; x<testArray; x  ){
    printf("%s", testArray[x]);
}


 

Я пытаюсь найти все способы печати строк с помощью циклов на языке си. Любая помощь была бы очень признательна. Спасибо.

Комментарии:

1. То, что ты написал, не работает. %c требует , чтобы аргумент был a char , но 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. Большое спасибо за разъяснение.