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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
-
4
scanfに文字が入力されたときにエラー表示させる
C言語・C++・C#
-
5
入力値が1以下、かつ数字以外の文字の場合・・・
C言語・C++・C#
-
6
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
7
char str[256]の256の意味は?
C言語・C++・C#
-
8
バッファとは何ですか
C言語・C++・C#
-
9
ファイルから読み取った改行文字を消す方法
C言語・C++・C#
-
10
関数から配列を返すには?
C言語・C++・C#
-
11
if文の条件にscanf関数を使うと…?
C言語・C++・C#
-
12
ファイルから読み込んだデータを構造体に格納できますか?
C言語・C++・C#
-
13
*をユーザーが入力した数字の数だけ表示するプログラムの作り方を教えてください
C言語・C++・C#
-
14
C言語初心者の質問失礼します。
C言語・C++・C#
-
15
C言語でgetchar();が上手く使えずに困っています‼ void input(char *cx,
C言語・C++・C#
-
16
入力する数字のサイズ制限について
C言語・C++・C#
-
17
C言語 空白の行(改行のみ)が入力されたらプログラムを終了する処理
C言語・C++・C#
-
18
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
19
4桁の数字以外を入力したらエラーを表示したいです
C言語・C++・C#
-
20
エディットボックスの入力制限について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング初心者です。 Py...
-
*をユーザーが入力した数字の数...
-
"scanf"でエンターで改行させな...
-
数字以外が入力されたらエラー...
-
scanf が無視されます
-
正負を反転させて出力するプロ...
-
batプログラム上で文字列を入力...
-
C言語 for文をつかって記号を表...
-
ワードで文字を入力する時の変...
-
数字と、文字列入力のチェック...
-
Spreadのコンボボックス
-
"gets"は危険なのでしょうか?
-
Eclipseでコマンドラインを入力...
-
C言語scanf_sで何故か2回入力に...
-
C言語 逆ピラミッドの作り方
-
C言語でgetchar();が上手く使え...
-
Linuxプログラミングで、キーボ...
-
VisualStudio2019のコードアナ...
-
コマンドプロンプトからのEOFの...
-
Linuxで入力待ちなしkeyread関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
プログラミングの問題です 「金...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
double型が正常に認識されてい...
-
cout関数を使っているのですが...
-
小数か整数かを判定する方法
-
WindowsでEOF
-
scanfが2回使えない・・・?;
-
C言語でgetchar();が上手く使え...
おすすめ情報