【初心者歓迎】C/C++室 Ver.53【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0668デフォルトの名無しさん
2008/05/08(木) 16:36:11そもそもjudgeは引数でintを受け取るのだから、どんなintの値を渡したところで、半角数字以外と判定されることはありえない (※マイナスはある)
再入力の方は、scanfの動作をもうちょっとよく知る必要がある
int s, n;
n = scanf("%d", &s);
このようにしたとき、%dは数値入力の指示なので、数値が入力された場合はそれが読み取られ、sにその値が入って、nに1が返される
数値以外が入力された場合は、何も読み取られず、nに0が返される
ここで、何も読み取られないというのは、その文字列はまだ入力バッファに残っていて、次回scanf等を呼んだときに再び現れるという意味
そこでまた%dしても、その文字列は数値ではないので、何も読み取られず、また入力バッファに残ったままになる
この文字を何か他の方法 (getcとか%sとか何でもいい) で読み取って捨てない限り、%dは永久に成功しない
■ このスレッドは過去ログ倉庫に格納されています