1
私はC言語を使ってコードを書く方法を自分で学習しています。この後者をもう少し深く勉強するために、いくつかの基本的な演習を行っています。そのため、今日はscanf()
命令を使用して少し問題に直面しました。 Infactは、次のコード:コンパイル時にCのscanf()に関する問題
int main() {
char inputOne;
char inputTwo;
printf("Insert a char: ");
scanf("%c", &inputOne);
// &inputOne is the pointer to inputOne.
printf("Insert another char: ");
scanf("%c", &inputTwo);
if (inputOne == inputTwo) {
printf("You have inserted the same char!\n");
printf("Chars inserted: %c, %c\n", inputOne, inputTwo);
} else {
printf("You have inserted two different chars!\n");
printf("Chars inserted: %c, %c\n", inputOne, inputTwo);
}
}
はエラーを返しませんが、私は、ターミナル上でアプリケーションを起動したときに、私は2番目の文字を挿入することはできませんよ。ここ は何が起こるかの例です:
Macbook-Pro-di-Rodolfo:~ Rodolfo$ /Users/Rodolfo/Documents/GitHub/Fondamenti\ di\ C/esempio-if-else ; exit;
Insert a char: a
Insert a second char: You have inserted two different chars!
Chars inserted: a,
logout
[Process completed]
これがなぜ起こるか誰が私を説明できますか?
ワン*この質問の重複の[見つけることができます**こちら**](https://stackoverflow.com/questions/1959255/ c-read-a-single-char-from-stdin-and-failing-w-scanf-getchar)を使用します。 – WhozCraig
@ user3121023変換仕様の前後のスペース数が最終結果に影響しますか?言い換えれば、 'scanf("%c "、&inputTwo)'と 'scanf("%c "、&inputTwo)'はコンパイラと同じですか? – rudicangiotti
@ user3121023申し訳ありませんが、私の最初のコメントでは正しく表示されていませんが、 'scanf()'が引用符と変換指定 '%'の間の空白の数から同じように振る舞い、 。つまり、「%c」と「%c」が同じものを出力しているとします。 –
rudicangiotti