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';                // <<<