
No.1ベストアンサー
- 回答日時:
★アドバイス
>scanfで数字を取り込みたいのですが、ここでaなどのアルファベットや記号を入力すると、
>無限ループが発生してしまいます。
↑
ソースとかを見せて欲しいです。
見ないとなぜ無限ループするのか判断できません。
>エラーが出ないように、数字以外が入力されたら、エラーメッセージを出すようなプログラムを
>作りたいのですが、どうすれば出来るでしょうか。
↑
多分、scanf で整数の入力を行っていると思うので文字列で入力するようにします。
そしてそのその文字列を strtod() 関数で整数に変換します。
・このときグローバル変数の errno を調べて ERANGE なら整数値のオーバーフローが起きたとか、
第2引数で私のポインタに変換できなくなった位置をセットしますので、このポインタが \0 文字
以外なら数字以外(アルファベットや記号)が混ざっていることになります。
・下にそのサンプルを載せます。
サンプル:
char buff[ 256 ];
char *argp;
int value;
// 文字列で入力
scanf( "%s", buff );
value = strtol( buff, &argp, 10 ); ←10進数で変換
// ここでチェック
if ( (errno != ERANGE) && (*argp != '\0') ){
printf( "変換不可能な文字が入力されています。\n" );
exit( 1 );
}
その他:
・上記のサンプルを使うには errno.h をインクルードして下さい。
このヘッダに ERANGE 定数が定義されています。
あと stdlib.h もインクルードしないと strtol() 関数が利用できません。
・以上。下の『参考URL』もどうぞ。
参考URL:http://www9.plala.or.jp/sgwr-t/lib/strtol.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
scanfに文字が入力されたときにエラー表示させる
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
入力値が1以下、かつ数字以外の文字の場合・・・
C言語・C++・C#
-
-
4
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
5
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
6
関数から配列を返すには?
C言語・C++・C#
-
7
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
8
バッファとは何ですか
C言語・C++・C#
-
9
fgetsで拾われる改行文字を削除したい
C言語・C++・C#
-
10
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
11
C言語のポインターに関する警告
C言語・C++・C#
-
12
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
13
4桁の数字以外を入力したらエラーを表示したいです
C言語・C++・C#
-
14
C言語初心者の質問失礼します。
C言語・C++・C#
-
15
c言語のポインタへの文字列入力についてです。
C言語・C++・C#
-
16
fgets関数を使用したときの文字あふれについて
C言語・C++・C#
-
17
C言語 マスターマインドゲーム 数字以外の文字を入力した場合 教えてください
C言語・C++・C#
-
18
java初心者です。入力されたのが数字なら出力し、数字以外が入力されたらもう一度入力する繰り返し処理
Java
-
19
構造体のメンバをfor文で回したい
C言語・C++・C#
-
20
char str[256]の256の意味は?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
batプログラム上で文字列を入力...
-
EDITコントロールで入力できる...
-
コマンドプロンプトからのEOFの...
-
scanf が無視されます
-
java初心者です。入力されたの...
-
入力値が1以下、かつ数字以外の...
-
C言語におけるfgetsを用いたル...
-
正負を反転させて出力するプロ...
-
UWSCで変数をキー入力
-
VB カウントダウンタイマーの作...
-
C言語でのカレンダー作成
-
Yesならこっちへ、NOなら...
-
Excel VBAで、Application.Inpu...
-
実行結果の順番がおかしいんで...
-
C言語の制限時間
-
enterでループ終了
-
WindowsでEOF
-
数値の連続入力終了条件について
-
プログラミングの問題です 「金...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
scanfが2回使えない・・・?;
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
C言語 逆ピラミッドの作り方
-
プログラミングの問題です 「金...
-
if文の条件にscanf関数を使うと…?
-
C言語でgetchar();が上手く使え...
-
UWSCで変数をキー入力
-
4桁の数字以外を入力したらエラ...
-
EDITコントロールで入力できる...
-
C言語でつるかめ算をするにはど...
-
Userformの入力順序をタブオー...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報