C 为什么这个程序不把数组的内容打印成字符串?
这个程序应该存储一行相反的文本并打印出来。我证明了反转文本存储在数组中,因为我可以一次打印一个字符,但它不会将其打印为字符串C 为什么这个程序不把数组的内容打印成字符串?,c,arrays,C,Arrays,这个程序应该存储一行相反的文本并打印出来。我证明了反转文本存储在数组中,因为我可以一次打印一个字符,但它不会将其打印为字符串 #include <stdio.h> //Print lines in reverse int main() { int c=0, iget=0, iprnt=0; char getline[1000]; char printline[1000]; while ((c=getchar())!='\n' &&
#include <stdio.h>
//Print lines in reverse
int main()
{
int c=0, iget=0, iprnt=0;
char getline[1000];
char printline[1000];
while ((c=getchar())!='\n' && c!=EOF){
getline[iget] = c;
++iget;
}
while (iget >= 0){
printline[iprnt] = getline[iget];
++iprnt;
--iget;
}
printf ("%c%c%c%c%c%c%c%c\n", printline[0], printline[1],
printline[2], printline[3], printline[4], printline[5],
printline[6], printline[7]);
printf ("Result: %s\n", printline);
}
我花了很长时间研究它,并尝试了很多方法,包括在字符串后的下一个位置添加“\0”。没用。
我很想知道它为什么不打印,以及什么可以解决它。在第二个while循环中,您复制了太多的字符,并且从输入字符串末尾以外的一个字符开始。您还需要终止printline
更改:
while (iget >= 0){
printline[iprnt] = getline[iget];
++iprnt;
--iget;
}
致:
char getline[1000]={0};字符打印行[1000]={0}。。。当iget>0{printline[iprnt++]=getline[-iget];}时,如果有人输入超过1000个字符会发生什么情况?我这样做了,但仍然没有成功。我忘了补充一句,为了简单起见,我只处理一个单词。这是我得到的结果desreveR反向结果:程序以退出代码结束:0'code'desreveR反向结果:程序以退出代码结束:0'code'非常感谢Paul。你修好了。事实上,我确实尝试添加“\0”,但没有效果。再次感谢。我想我现在可以睡觉了
while (--iget >= 0){ // <<<
printline[iprnt] = getline[iget];
++iprnt;
}
printline[iprnt] = '\0'; // <<<