「C言語の基礎 - 標準入力から安全に文字列を取得する」の版間の差分

ナビゲーションに移動 検索に移動
36行目: 36行目:
* %sは全ての空白文字(半角スペースも含む)を無視するため、%sの代わりに%[^\n]と指定することで、無視する対象を改行だけに限定できる。<br>例えば、<code>%255[^\n]</code>は、改行以外の文字列を1〜255文字読み込むことを意味する。
* %sは全ての空白文字(半角スペースも含む)を無視するため、%sの代わりに%[^\n]と指定することで、無視する対象を改行だけに限定できる。<br>例えば、<code>%255[^\n]</code>は、改行以外の文字列を1〜255文字読み込むことを意味する。
* <code>%</code>の代わりに<code>%*</code>を使用すると、その部分を読み飛ばすことができる。<br>例えば、256文字以上入力する場合、最初の255文字までを受け取り、残りを捨てる場合は、<code>%255[^\n]%*[^\n]</code>と記述する。
* <code>%</code>の代わりに<code>%*</code>を使用すると、その部分を読み飛ばすことができる。<br>例えば、256文字以上入力する場合、最初の255文字までを受け取り、残りを捨てる場合は、<code>%255[^\n]%*[^\n]</code>と記述する。
* 再度<code>scanf</code>関数を使用する場合に備えて、残った改行は<code>%*c</code>で読み飛ばす。<br>これにより、保持されていた入力データは全て処理されたことになる。<br>ただし、次に読み取るものが<code>%d</code>等の数値である場合には、これをしなくても特に影響はない。
* 再度<code>scanf</code>関数を使用する場合に備えて、残った改行は<code>%*c</code>で読み飛ばす。<br>これにより、保持されていた入力データは全て処理されたことになる。<br>ただし、次に読み取るものが<code>%d</code>等の数値である場合には、<code>%*c</code>で読み飛ばさなくても特に影響はない。
<br>
<br>
また、<code>scanf</code>関数は正常に読み取って変数に格納できたパラメータの数を返すので、これを成功したかどうかの判定に用いることができる。<br>
また、<code>scanf</code>関数は正常に読み取って変数に格納できたパラメータの数を返すので、これを成功したかどうかの判定に用いることができる。<br>

案内メニュー