
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ランキング
-
DLLファイルの逆コンパイラにつ...
-
プログラマー達は何故、プログ...
-
C言語の関数のextern宣言
-
卒業研究でよく分からないとこ...
-
C言語 関数、変数の宣言について
-
C言語について(初心者)
-
C言語のことです。写真(見にく...
-
Windows Formアプリからコンソ...
-
DNCL(共テ用プログラミング言語...
-
C言語について。
-
visual studio 2022でのC#プロ...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
C# で 数式文字列処理を処理す...
-
gccを行ってもexeファイルが生...
-
c言語
-
C言語 列挙型(enum型)変数について
-
C++でデスクトップGUIアプリ開...
-
c言語でイベントフラグを使った...
-
必ずyou bet と表示されます
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語
-
DLLファイルの逆コンパイラにつ...
-
Windows Formアプリからコンソ...
-
大量のデータを読み込んで表示...
-
C言語の関数のextern宣言
-
VisualStudioでC++クラスを追加...
-
【C言語】全角文字の配列を、全...
-
VisualStudio2022でC言語プログ...
-
C++でデスクトップGUIアプリ開...
-
gccを行ってもexeファイルが生...
-
C#でTreeViewのCheckBoxのサイ...
-
C#でログファイルにファイルパ...
-
プログラマー達は何故、プログ...
-
逆コンパイルと逆アセンブルの...
-
Notepad++の関数リスト表示の変...
-
C言語について。
-
Cのコンパイルでコメントアウト...
-
visual studio 2022でのC#プロ...
-
コンソールアプリを作成するの...
-
C言語 バッファについて。
おすすめ情報