-1

入力から文字単位で読み取り、出力に出力するプログラムを作成しました。これが私のコードです。

#include <stdio.h>

main()
{

    int c;
    while((c = getchar()) != EOF)
    {
        printf("%s\n", "log1");
        printf("%c\n", c);
        printf("%s\n", "log2");
    }

}

これが結果です。

a(my input)
log1
a
log2
log1


log2

しかし、次の結果が得られるはずです:

a
log1
a
log2

このプログラムの何が問題になっていますか?

4

5 に答える 5

0

getchar2 回目の反復中に実行されます。問題は、入力が実際には「a [enter]」だったため、getchar読み取った2番目の文字が改行文字であり、それを出力したことです。

「abc」と入力すると、より明確に見えるかもしれません。

于 2013-10-13T06:18:13.193 に答える
0

印刷しない条件を設定する\n(押したとき)Enter

  while((c = getchar()) != EOF)
        {
            if(c != '\n') 
            printf("%s\n", "log1");
            printf("%c\n", c);
            printf("%s\n", "log2");
        }
于 2013-10-13T09:38:29.050 に答える
0

while(getchar() != '\n');

while ループ内の式は毎回実行されることに注意してください。そのため、'\n' という文字が見つかった場合でも、getchar() 呼び出しによってストリームから既に削除されています。

于 2013-10-13T06:27:00.707 に答える