此程序应存储相反的文本行并打印出来。我证明反向文本存储在数组中,因为我可以一次打印出一个字符,但不会将其作为字符串打印出来。
#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'。没工作。 我很想知道它为什么不打印以及它将如何修复它。
答案 0 :(得分:4)
在第二个while
循环中,您复制了太多字符,并且从输入字符串末尾之外的一个字符开始。您还需要终止printline
。
变化:
while (iget >= 0){
printline[iprnt] = getline[iget];
++iprnt;
--iget;
}
为:
while (--iget >= 0){ // <<<
printline[iprnt] = getline[iget];
++iprnt;
}
printline[iprnt] = '\0'; // <<<