2

Xcode開発ツールは初めてです。問題をデバッグするために、非常に単純なコードを試しました。

int main()
{char N;
 char M;
 scanf("%c",&N);
 scanf("%c",&M);
 printf("%c",N);
 printf("%c",M);
}

しかし問題は、コンパイラが 2 番目の scanf を読み取っていないように見えることです。そのため、コンソールに 1 文字入力すると、プログラムが停止します。驚くべきことに、「char」の代わりに「int」を使用して同じコードを書くと、問題なく動作します。誰が何が悪いのか考えていますか?

4

1 に答える 1

6

最初の scanf に文字を入力した後、Enter キーを押していますよね? その Enter は、2 番目の scanf によって読み取られるものです。そして、2番目のprintfによって印刷されます。

このプログラムの出力は示していませんが、printf の書式設定を%d\nfrom%cに変更すると、「a」と入力して Enter キーを押すと、おそらく次のようになります。

97
10

その 10 が Enter (改行または改行) の文字コードです。

于 2012-05-14T01:50:30.047 に答える