我正在创建一个反转每一行输入的程序。C fgets()得到输入,直到EOF,而不是输入两次
这是我的代码:
#include <stdio.h>
#include <string.h>
int main()
{
char c[100];
while((fgets(c,100,stdin)) != NULL)
{
c[strlen(c) - 1] = '\0';
for(int i=strlen(c); i>=0; i--)
{
printf("%c",c[i]);
}
}
}
我的测试输入:
abc 123
lorem ipsum
dolor sit amet
我可以打印第一线接反就好:
abc 123
321 cba
但是,当我开始输入下一行输入,它接近反向输入,所以完整的程序运行Ë测试输入如下所示:
abc 123
321 cbalorem ipsum
muspi meroldolor sit amet
tema tis rolod
当它应该是这样的:
abc 123
321 cba
lorem ipsum
muspi merol
dolor sit amet
tema tis rolod
作为一种变通方法,我按输入输出后,再次以能够进入下一行输入自己的路线,但我不明白为什么我需要这样做。
一个程序来'倒退''?听起来就像你只需要一个打印声明。 –
在'for'循环之后,'printf(“\ n”);',否则您将在与第一行的反向输入相同的行上输入下一行输入。 –
你也应该确保'\ n'甚至在字符串中。如果'fgets'完全读取任何字符,除非发生错误,否则它不会返回NULL。这意味着你可以阅读'你好'而不是'你好\ n ''。因为''不会在你的缓冲区中,所以你读的是“Hello”,'c [strlen(c)-1] = 0;'会导致你打印出“lleH”而不是“olleH ”。 –