char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
for(int x = 0; x<testArray; x++){
printf("%s", testArray[x]);
}
我试图找到所有的方法,我可以在c语言中使用循环打印字符串。任何帮助都将非常感激。谢谢你。
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] );
}
如果需要指针:
#define TSIZE(x) (sizeof(x) / sizeof((x)[0]))
int main(void) {
char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
for(char (*x)[50] = testArray; x < &testArray[TSIZE(testArray)]; x++){
printf("%sn", *x);
}
}
或者你想使用%c
格式:
int main(void) {
char testArray[][50] = {"Mango", "Strawberry", "Bannana", "Cherry"};
for(char (*x)[50] = testArray; x < &testArray[TSIZE(testArray)]; x++)
{
char *p = x[0];
while(*p)
printf("%c", *p++);
printf("n");
}
}