
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
入力値が1以下、かつ数字以外の文字の場合・・・
C言語・C++・C#
-
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
4
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
5
scanfに文字が入力されたときにエラー表示させる
C言語・C++・C#
-
6
4桁の数字以外を入力したらエラーを表示したいです
C言語・C++・C#
-
7
入力エラーの処理について。
C言語・C++・C#
-
8
バッファとは何ですか
C言語・C++・C#
-
9
C言語の整数の判別
C言語・C++・C#
-
10
C++で入力した文字列から数字を取り除くもしくは数字のみをのこす
C言語・C++・C#
-
11
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
12
char str[256]の256の意味は?
C言語・C++・C#
-
13
ファイルから読み込んだデータを構造体に格納できますか?
C言語・C++・C#
-
14
C++で空Enterの入力を判断したい!!
C言語・C++・C#
-
15
charと%c , %s の関係について
C言語・C++・C#
-
16
C言語において、 配列要素をひとつずつ前にずらすコード
C言語・C++・C#
-
17
ファイル出力で改行を入れたい!
C言語・C++・C#
-
18
構造体の中の構造体
C言語・C++・C#
-
19
C#で、テキストボックスの入力について。
C言語・C++・C#
-
20
char型にint型の数値を代入する。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Date関数で書いた日付がおかしい
-
5
正負を反転させて出力するプロ...
-
6
cout関数を使っているのですが...
-
7
VB.NETで16進数+16進数や16進...
-
8
Userformの入力順序をタブオー...
-
9
"gets"は危険なのでしょうか?
-
10
if文の条件にscanf関数を使うと…?
-
11
数字以外が入力されたらエラー...
-
12
C言語scanf_sで何故か2回入力に...
-
13
scanfでの可変引数
-
14
WindowsでEOF
-
15
二次元配列2
-
16
IF文で戻ることはできますか?...
-
17
プログラミングの問題で、キー...
-
18
C言語について
-
19
VisualStudio2019のコードアナ...
-
20
Linuxで入力待ちなしkeyread関...
おすすめ情報
公式facebook
公式twitter