
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- その他(動画サービス) u-nextの31日間無料体験に申し込むためのdアカウントの電話番号登録について 3 2022/08/27 00:29
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Excel(エクセル) Excelの入力規則にいれる関数について 7 2022/12/22 10:19
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
このQ&Aを見た人はこんなQ&Aも見ています
-
scanfに文字が入力されたときにエラー表示させる
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
入力値が1以下、かつ数字以外の文字の場合・・・
C言語・C++・C#
-
-
4
C言語のポインターに関する警告
C言語・C++・C#
-
5
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
6
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
7
バッファとは何ですか
C言語・C++・C#
-
8
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
9
関数から配列を返すには?
C言語・C++・C#
-
10
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
11
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
12
fgetsで拾われる改行文字を削除したい
C言語・C++・C#
-
13
4桁の数字以外を入力したらエラーを表示したいです
C言語・C++・C#
-
14
C言語初心者の質問失礼します。
C言語・C++・C#
-
15
char str[256]の256の意味は?
C言語・C++・C#
-
16
C言語 空白の行(改行のみ)が入力されたらプログラムを終了する処理
C言語・C++・C#
-
17
java初心者です。入力されたのが数字なら出力し、数字以外が入力されたらもう一度入力する繰り返し処理
Java
-
18
C++で入力した文字列から数字を取り除くもしくは数字のみをのこす
C言語・C++・C#
-
19
char*を初期化したいのですが
C言語・C++・C#
-
20
構造体の要素すべてに対する四則演算の方法を教えてください.
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseコンソール表示を、リセ...
-
数字以外が入力されたらエラー...
-
java初心者です。入力されたの...
-
scanfが2回使えない・・・?;
-
C言語・YesNo入力のループで解...
-
正負を反転させて出力するプロ...
-
getchar()について 教えてくだ...
-
"scanf"でエンターで改行させな...
-
コマンドプロンプトからのEOFの...
-
至急教えてください!プログラ...
-
*をユーザーが入力した数字の数...
-
scanf関数 バッファに残ったエ...
-
入力候補を表示させるには・・・?
-
EDITコントロールで入力できる...
-
Excel VBAで、Application.Inpu...
-
入力値が1以下、かつ数字以外の...
-
WindowsでEOF
-
電卓の小数点
-
getcharをしながらwhile文で出...
-
ワードで文字を入力する時の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
数字以外が入力されたらエラー...
-
Excel VBAで、Application.Inpu...
-
EDITコントロールで入力できる...
-
*をユーザーが入力した数字の数...
-
Linuxプログラミングで、キーボ...
-
Eclipseコンソール表示を、リセ...
-
入力候補を表示させるには・・・?
-
batプログラム上で文字列を入力...
-
UWSCで変数をキー入力
-
VisualStudio2019のコードアナ...
-
小数か整数かを判定する方法
-
scanfが2回使えない・・・?;
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
Delphi初心者 ボタン操作につ...
-
コマンドプロンプトからのEOFの...
-
Eclipseでコマンドラインを入力...
-
Userformの入力順序をタブオー...
おすすめ情報