我正在創建一個反轉每一行輸入的程序。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 」。 –