0

プログラムが非常に短いので、おそらく簡単な修正ですが、なぜ私が奇妙な出力を得るのかを理解するのを手伝ってください:

#include <stdio.h>

int main(void)

{
    char x;
    printf("please enter a word, and ctrl + d to see the resault\n");

    while ((x = getchar()) != EOF)
    {
        printf("%d", x);
    }


    return 0;
}

intput: 'd'
output: 10010
4

3 に答える 3

3

10010を取得する理由は、「d」に続いて「return」を押しているためです。

これをより簡単に視覚化するには、printf形式を「%d\n」に変更します。

修正は次のようになります。

while ((x = getchar()) != '\n' )
{
}
于 2013-02-01T12:52:11.397 に答える
2

これは、戻り値を切り捨てているためです。

getchar()を返します。ドキュメントintをご覧ください。

EOFどのキャラクターとも「衝突」することはできないので、このようにする必要があります。はよりintも大きいのでchar、これにより、のセットの外側にありながら、EOFとして表現できる数値のスペースのどこかに入ることができます。intchar

user876651で説明されているように、出力「10010」は実際には2つの10進整数であり、互いに隣り合って出力されます。

  • 100は小文字のASCIIコードです'd'
  • 10はラインフィードのASCIIです'\n'

改行を使用して印刷する必要があります。printf("%d\n", x);これらを独自の行に配置するには。

于 2013-02-01T12:45:47.287 に答える
1

as returnに変更char xすると、それが印刷しようとしているものです。int xgetchar()int

編集:

getchar()動作するには、Enterキーを押す必要があります。つまり\n、これも印刷されます。

于 2013-02-01T12:47:40.620 に答える