私はすべての入力行を逆にするプログラムを作成しています。2回入力するのではなくEOFまで入力するfgets()
これは私のコードです:
#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
を、私は次の行を入力することができるように出力した後、再びをEnterキーを押し自分の行に入力する必要がありますが、なぜ私はそれを行う必要があるのか分かりません。
リバース「?」を逆転するプログラムですか?あなたは単にprintステートメントが必要なように思えます。 –
'for'ループ、' printf( "\ n"); 'の後に、最初の行の逆入力と同じ行に次の入力行を入力します。 –
また、 '\ n'が文字列内にあることを確認する必要があります。 'fgets'が文字を読み込むと、エラーが発生しない限り' NULL'を返しません。つまり、 'Hello \ n'の代わりに 'Hello 'を読むことができます。 ''はあなたのバッファには入っていないので、 "Hello"と 'c [strlen(c) - 1] = 0;'は "olleH"の代わりに "lleH" " –