
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#
-
入力値が1以下、かつ数字以外の文字の場合・・・
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
-
4
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
5
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
6
関数から配列を返すには?
C言語・C++・C#
-
7
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
8
バッファとは何ですか
C言語・C++・C#
-
9
fgetsで拾われる改行文字を削除したい
C言語・C++・C#
-
10
4桁の数字以外を入力したらエラーを表示したいです
C言語・C++・C#
-
11
C言語のポインターに関する警告
C言語・C++・C#
-
12
C言語 マスターマインドゲーム 数字以外の文字を入力した場合 教えてください
C言語・C++・C#
-
13
コマンドラインからの入力で
C言語・C++・C#
-
14
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
15
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
16
c言語のポインタへの文字列入力についてです。
C言語・C++・C#
-
17
fgets関数を使用したときの文字あふれについて
C言語・C++・C#
-
18
java初心者です。入力されたのが数字なら出力し、数字以外が入力されたらもう一度入力する繰り返し処理
Java
-
19
char str[256]の256の意味は?
C言語・C++・C#
-
20
構造体のメンバをfor文で回したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング初心者です。 Py...
-
cout関数を使っているのですが...
-
scanf関数について
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
4桁の数字以外を入力したらエラ...
-
Userformの入力順序をタブオー...
-
電卓の小数点
-
CRC16コード作成プログラムにつ...
-
Linuxで入力待ちなしkeyread関...
-
Eclipseコンソール表示を、リセ...
-
LuaとWSHについて
-
java初心者です。入力されたの...
-
fflush(stdin)の使い方とprintf...
-
getchar()について 教えてくだ...
-
プログラミングの問題です 「金...
-
2進数の1の数を数える問題
-
EDITコントロールで入力できる...
-
IF文で戻ることはできますか?...
-
コマンドプロンプトからのEOFの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
正負を反転させて出力するプロ...
-
EDITコントロールで入力できる...
-
Excel VBAで、Application.Inpu...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
入力値が1以下、かつ数字以外の...
-
コマンドプロンプトからのEOFの...
-
電卓の小数点
-
プログラミングの問題です 「金...
-
scanf が無視されます
-
漢字のソートについて
-
scanfが2回使えない・・・?;
-
C言語について
-
Userformの入力順序をタブオー...
-
WindowsでEOF
-
ワードで文字を入力する時の変...
おすすめ情報