12,788
回編集
40行目: | 40行目: | ||
また、<code>scanf</code>関数は正常に読み取って変数に格納できたパラメータの数を返すので、これを成功したかどうかの判定に用いることができる。<br> | また、<code>scanf</code>関数は正常に読み取って変数に格納できたパラメータの数を返すので、これを成功したかどうかの判定に用いることができる。<br> | ||
<code>%255[^\n]%*[^\n]</code>を実行した場合の戻り値は、以下のようになる。<br> | <code>%255[^\n]%*[^\n]</code>を実行した場合の戻り値は、以下のようになる。<br> | ||
* 1文字以上読み取れたときは 1 | * 1文字以上読み取れたときは <code>1</code> | ||
* 改行だけが入力されたときは 0 | * 改行だけが入力されたときは <code>0</code> | ||
* 最初から [Ctrl] + [D](Linux)または[Ctrl] + [Z](Windows)でEOFが入力された時は、EOF(EOF定数の値 : -1) | * 最初から [Ctrl] + [D](Linux)または[Ctrl] + [Z](Windows)でEOFが入力された時は、EOF(EOF定数の値 : -1) | ||
* 失敗した場合は、<code>return 1;</code>としてプログラムを異常終了扱いにするとよい。 | * 失敗した場合は、<code>return 1;</code>としてプログラムを異常終了扱いにするとよい。 | ||
<br> | <br> | ||
以下の例では、必ず1文字以上入力させている。<br> | 以下の例では、必ず1文字以上入力させている。<br> | ||
< | <syntaxhighlight lang="c"> | ||
#include <stdio.h> | #include <stdio.h> | ||
64行目: | 64行目: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
以下の例では、改行だけの入力を認めている。<br> | 以下の例では、改行だけの入力を認めている。<br> | ||
< | <syntaxhighlight lang="c"> | ||
#include <stdio.h> | #include <stdio.h> | ||
85行目: | 85行目: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br> | <br> | ||
以下の例では、入力された文字数も取得している。(%255[^\n]の後ろは、unsigned / intの場合は% | 以下の例では、入力された文字数も取得している。(<code>%255[^\n]</code>の後ろは、unsigned / intの場合は<code>%n</code>、size_t / ssize_tの場合は<code>%zn</code>を指定する)<br> | ||
(% | (<code>%n</code>系は符号付き整数で取得するように定義されているが、負の値が出現する可能性がゼロなので、符号無し整数でも問題ない)<br> | ||
< | <syntaxhighlight lang="c"> | ||
#include <stdio.h> | #include <stdio.h> | ||
109行目: | 109行目: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||