'割り当てが成功しなかった場合scanfが0を返していることがわかりますが、それが唯一のことですか?これは私のコードです:scanfが0でcを返してもうまく動作しない場合
#include<stdio.h>
int main(void) {
int val,x;
x=scanf("%d",&val);
if(x==1)
printf("success!");
else{
printf("try again\n");
scanf("%d",&val);
}
return 0;
}
私は番号を入力した場合、それが正常に動作しますが、私は、文字のscanfはもう動作しません入力した場合、これは私が得るものです:
ということを意味k
try again
process returned 0 (0x0) execution time :2.578 s
press any key to continue.
_
私は新しい価値を入力することができません、それはなぜですか?コードに何か問題がありますか?はい、どうすれば修正できますか?私はscanfの使用を止めるべきですか?
'scanf'を使用しないでください。 'fgets()'を使って行全体を読み込み、 'sscanf'を使って行内のデータを処理してください。 – Barmar
'sscanf'も使用しないでください。 'fgets()'を使って行全体を読み込み、 'strtol'と友人を使って行内のデータを処理してください。任意の誤った入力に直面しても、これらの機能だけが信頼できます。 – zwol
ありがとう!私はそれらの解決策を試みます! –