まず最初に:
SCANF
言語によって定義されていません。
CHAR
言語によって定義されていません。
さて、それは邪魔になりません...
このscanf()
関数は整数を返します。その整数は、割り当てられた入力項目の数、またはEOF
最初の変換の前に入力エラーが発生した場合のマクロの値です。
呼び出しの戻り値を確認しなかったscanf()
ため、何が起こったのかわかりません。すべてが正常に機能したか、最初の変換の前に入力ストリームが終了したか、(%cではなく)変換に失敗した可能性があります。
の戻り値をテストしますscanf()
。実際、常にすべての<stdio.h>関数の戻り値をテストしてください。
char ch;
int result = scanf("%c", &ch);
if (result == 1) /* all ok */;
else if (result == 0) /* conversion failure: value of `ch` is indeterminate */;
else if (result == EOF) /* input failure; value of `ch` is indeterminate */;
scanf()
呼び出しの結果がであるEOF
場合、入力失敗の理由に関する詳細情報が必要な場合は、feof()
および/またはを使用できますferror()
。
else if (result == EOF) {
if (feof(stdin)) {
/* no data in input stream */
}
if (ferror(stdin)) {
/* error if input stream (media ejected? bad sector? ...?)
}
}
あなたの質問に答えるには:what will promptChar() return?
char型の不確定な値を返します。
文字を処理し、からintを返すライブラリ関数の例に従うことができますpromptChar()
。これは、読み取られた文字の値、unsigned char
またはエラーの場合は負のint(EOF
)になります。fgetc()
たとえば、の説明を読んでください。