私は入力が何であるかをチェックしたいときにこの問題に遭遇しました。 scanf関数は、数値の入力に成功すると1を返します。それにABCDのようなI入力物事は、ループは永遠に行くと、プロンプトのために停止しないだろうというとき12ab to scanf( "%d"、&argu)のようなものを入力するとどうなりますか?
int argu;
while(scanf("%d",&argu)!=1){
printf("Please input a number!\n");
}
をしかし:だから、ここで私が書いたものです。
オンラインで調べたところ、キャッシュと何か関係があり、scanfが新しいデータを取得できるように、キャッシュを消去する必要があることがわかりました。だから私はfflushを試みたが、うまくいかなかった。 「ABCD」のようなI入力の事は、それがうまく働いていた、それは私の入力を求められたら、次に
int argu,j;
while(scanf("%d",&argu)!=1){
printf("Please input a number!\n");
while((j=getchar())!='\n' && j != '\n');
}
:
は、その後、私はこれを見ました。しかし、「12ab」のようなものを入力すると、もう一度動作しません。
scanf( "%d"、& argu)の入力を確認できる方法は実際には数字で、入力されていない場合はプロンプトが表示されますか?
EDIT:
私は答えを見て、while(*eptr != '\n')
を使用して私の問題を解決しました。
fgets
関数は実際には配列に '\ n'を読み取り、fget
は読み取らないことに注意してください。ので注意してください。
fgets(s、10、stdin)のようなコードを使用しますか? – Gnijuohz
ありがとう!私はstrtolを知らなかった。多くを学んだ! – Gnijuohz
申し訳ありませんが、 'if(eptr == NULL ||!isspace(* eptr))'を説明できますか?あなたが与えたコードを使うとき、'12 34 'のような入力は受け入れられますが、そうではありません。 eptrが指し示す「1234」と「12ab」と「12 34」を入力するとどうなりますか? – Gnijuohz