#2
by かずま » 8年前
kodaill さんが書きました:知りたいことは、scanfが何か文字を読み込むが、フォーマットに合致しないので0を返すか(その際にバッファに文字列が残ってしまうのか)
scanf は、書式の "%d %d %d" で変換できた個数を返します。
"%d" と 1個なら、1 か 0 を返しますが、EOF(-1)の場合もあります。
読まなかった文字は、標準入力バッファに残ります。
kodaill さんが書きました:また、矢印上キーからの変な入力を無視する方法はあるのでしょうか。
不正な文字を読み飛ばせばよいのでは?
コード:
#include <stdio.h>
int main(void)
{
int value, n;
while (1) {
n = scanf("%d", &value);
if (n == 1) break; // 正しく読み込めた
if (n == EOF) return 1; // 入力終わり (Ctrl-D)
getchar(); // 不正な文字を読み飛ばす
}
printf("value = %d\n", value);
return 0;
}
[quote="kodaill" id=3,19185,145302]知りたいことは、scanfが何か文字を読み込むが、フォーマットに合致しないので0を返すか(その際にバッファに文字列が残ってしまうのか)[/quote]
scanf は、書式の "%d %d %d" で変換できた個数を返します。
"%d" と 1個なら、1 か 0 を返しますが、EOF(-1)の場合もあります。
読まなかった文字は、標準入力バッファに残ります。
[quote="kodaill" id=3,19185,145302]また、矢印上キーからの変な入力を無視する方法はあるのでしょうか。[/quote]
不正な文字を読み飛ばせばよいのでは?
[code=c]
#include <stdio.h>
int main(void)
{
int value, n;
while (1) {
n = scanf("%d", &value);
if (n == 1) break; // 正しく読み込めた
if (n == EOF) return 1; // 入力終わり (Ctrl-D)
getchar(); // 不正な文字を読み飛ばす
}
printf("value = %d\n", value);
return 0;
}
[/code]