改行が発生するまで文字を読み込むための関数をCに書きたいと思っていました。 scanf関数を使用してC:scanfとgetcharの動作の相違点
コード:GETCHARを使用して while(scanf("%c",&x)!=EOF&&x!='\n'){....}
コード:while(((x=getchar())!=EOF)&&x!='\n'){....}
のint xは関数内で宣言されたローカル変数である私は、scanf関数とGETCHARを使用して、次のコードを書きました。 2番目のコードはword(EG: "ADAM \ n")を読み取った後に停止し、scanfコードはループを中断せずに待機し続けます。
その後、scanfの後に、xの値は(2^7-1)*(2^8)+文字読み込みのアスキー値(改行では32522)でしたが、文字定数 '\ n'は10でした。だから比較は失敗していた。
私の質問は、getcharが値10(文字定数 '\ n'と一致する)を割り当てている間に、 '\ n'を読んだ後でxに32000を超える値を割り当てる理由です。
'scanf("%c "、&x)== EOF'は深刻ですか? –
申し訳ありません。それは間違いだった。私はその行を修正しました@SouravGhosh – user3763284
は何で修正されましたか? scanf()の戻り値は重要です。 –