タイトル通り、使おうかな
while(getchar() != '\n');
scanf を使用するたびに? そして、誰かが背後にあるロジックを説明できますか
while(getchar() != '\n');
ありがとう。
タイトル通り、使おうかな
while(getchar() != '\n');
scanf を使用するたびに? そして、誰かが背後にあるロジックを説明できますか
while(getchar() != '\n');
ありがとう。
いいえ、通常はその必要はありません。stdin
投稿したループは、そうでない文字に遭遇するまで文字を読み取ります\n
。あなたが書いた方法では、最後の非改行文字は改行と同じように失われます。
典型的な問題または「フラッシュ」の必要性は、次の方法で回避できます。
scanf
他の入力方法と混在しない。たとえば、それを混ぜないでくださいfgets
たとえば、空白を無視するにはscanf("%c"...)
、scanf(" %c"..)
.
それはさておき、読み込む入力が複雑な場合は、次のことをお勧めします。
で文字列全体を読み取り、それを で好きなようにfgets
解析できます。矛盾しているように見えるかもしれません。ポイントは、 を使用して完全な文字列を安全に保存すると、それを分析したり、一致しない部分をスローしたり、あちこちで実行したりする自由が大幅に増えることです。sscanf
strtok
sscanf
scanf
fgets
strchr
タスクをより単純な問題に減らすために、python や perl など、ジョブにより適した言語 (ライブラリ付き) を使用します。
本格的なレクサーを使用する