几周前我刚刚开始学习C,通过阅读一本关于C的书。每章最后都有一些练习,其中有一个练习我无法弄清楚为什么我的代码不起作用。任务是从用户那里获取一些字符串,这些字符串将输入一个二维数组。然后,向后打印每个字符串。
例如,
用户将输入以下单词:sleep
、hello
、great
、
输出将为:peels
、olleh
、taerg
。
它必须是一个二维数组(这就是本章的内容)。
这是我的代码:
#include <stdio.h>
int main()
{
char string[5][6];
int i, j;
for(i=0; i<5; i++)
{
printf("please enter a string:\n");
scanf("%s", &string[i]);
}
printf("\n");
for(i=0; i<5; i++)
{
for(j=6; j<=0; j--)
{
printf("%c", string[i][j]);
}
printf("\n");
j=6;
}
return 0;
}
提前谢谢您!
最佳答案
%s
需要一个 char *
,您发送一个 char (*)[6]
。
scanf("%s", &string[i]);
=> scanf("%5s", string[i]);
您的 for
循环与 j
是错误的,您打印了 nul 终止字节。您应该使用 while
循环,这种情况在 C 中更惯用。
for (i = 0; i < 5; i++) {
j = 5;
while (j-- > 0) {
printf("%c", string[i][j]);
}
printf("\n");
}
关于c - C 中的二维字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41483472/