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も見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
今から楽しみな予定はありますか?
いよいよ2025年が始まりました。皆さんには、今から楽しみにしている予定はありますか?
-
数字以外の入力をエラーにするには?
Visual Basic(VBA)
-
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
-
4
scanfに文字が入力されたときにエラー表示させる
C言語・C++・C#
-
5
C言語のポインターに関する警告
C言語・C++・C#
-
6
入力値が1以下、かつ数字以外の文字の場合・・・
C言語・C++・C#
-
7
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
8
関数から配列を返すには?
C言語・C++・C#
-
9
char str[256]の256の意味は?
C言語・C++・C#
-
10
C言語 exitの使い方
C言語・C++・C#
-
11
C言語 空白の行(改行のみ)が入力されたらプログラムを終了する処理
C言語・C++・C#
-
12
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
13
C言語初心者の質問失礼します。
C言語・C++・C#
-
14
ファイルから読み取った改行文字を消す方法
C言語・C++・C#
-
15
4桁の数字以外を入力したらエラーを表示したいです
C言語・C++・C#
-
16
バッファとは何ですか
C言語・C++・C#
-
17
文字列の切り出し
C言語・C++・C#
-
18
scanf()で、エラー対応
C言語・C++・C#
-
19
C言語 strlen 再入力を促す
C言語・C++・C#
-
20
C言語において、 配列要素をひとつずつ前にずらすコード
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
java初心者です。入力されたの...
-
Excel VBAで、Application.Inpu...
-
Eclipseコンソール表示を、リセ...
-
C言語の制限時間
-
至急教えてください!プログラ...
-
EDITコントロールで入力できる...
-
数字以外が入力されたらエラー...
-
getchar()をつける意味
-
C言語 逆ピラミッドの作り方
-
scanfが2回使えない・・・?;
-
VB.NETで16進数+16進数や16進...
-
fgets関数とscanfについて
-
scanf関数について
-
scanf()の順番
-
Eclipseでコマンドラインを入力...
-
C++ Builder Xを使って実行結果...
-
入力値が1以下、かつ数字以外の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
*をユーザーが入力した数字の数...
-
"scanf"でエンターで改行させな...
-
コマンドプロンプトからのEOFの...
-
java初心者です。入力されたの...
-
Excel VBAで、Application.Inpu...
-
Eclipseコンソール表示を、リセ...
-
cout関数を使っているのですが...
-
scanfが2回使えない・・・?;
-
EDITコントロールで入力できる...
-
batプログラム上で文字列を入力...
-
C言語について
-
入力候補を表示させるには・・・?
-
プログラミングの問題です 「金...
-
4桁の数字以外を入力したらエラ...
-
C言語でgetchar();が上手く使え...
-
入力値が1以下、かつ数字以外の...
-
UWSCで変数をキー入力
おすすめ情報