空白、タブの読み飛ばし
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/23 00:15 UTC 版)
「scanf」の記事における「空白、タブの読み飛ばし」の解説
scanf は空白とタブは改行文字と同じ区切り文字として扱われる。例えば、 char a[20];scanf("%s", a); という方法で文字列を読み込もうとしたとする。このとき入力文字列が "This is a pen" というものだった場合、実引数に入力されるものは "This" までである。これだけでも問題であるが、さらに問題なのは、残りの " is a pen" という文字列はストリーム上に残されてしまうことである。このため次に scanf を呼んだ場合、入力にかかわらず実引数に "is" という文字列を代入しようとしてしまうことになる。これを防ぐ手段としては scanf("%[^\n]", a); という方法がとられる。この場合は改行文字以外の文字列を全て a に代入するため、a には空白やタブも含めて文字列が代入される。なお前述における入力時の改行コードの取り扱いも考慮した場合は、 scanf("%[^\n]%*c", a); という記述になる。
※この「空白、タブの読み飛ばし」の解説は、「scanf」の解説の一部です。
「空白、タブの読み飛ばし」を含む「scanf」の記事については、「scanf」の概要を参照ください。
- 空白、タブの読み飛ばしのページへのリンク