C言語で4桁の数字以外を入力したらエラーを表示したい!

このQ&Aのポイント
  • C言語を使って、4桁の数字以外が入力された場合にエラーメッセージを表示する方法を探しています。
  • 現在、文字列として入力し、字数をstrlenで判定し、各桁の数をisdigitで判定する方法を使っていますが、計算がうまくいきません。
  • もし、良い方法があれば教えてください。
回答を見る
  • ベストアンサー

charを使わずに4桁の数字以外を入力したらエラーを表示したいです

http://oshiete1.goo.ne.jp/qa4515709.html 上記の質問の続きとなります。 C言語で4桁の数字を入力させ、4桁の数字以外が入力されたらエラーを表示し、 4桁の数字が入力されたら、各位の数についていくつかの計算を行いたいです。 回答者の方のアドバイスから、文字列として入力し、字数をstrlenで、各桁の数をisdigitで判別するという方法を教えていただき、 4桁の数字以外が入力されたらエラーを表示することはできましたが、そうすると今度は計算がうまくいかなくなってしまいました。 例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? または、strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? もし良い方法をご存知の方いましたら、解説をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

>例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? atoiという標準関数について調べてください。 >strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? 入力は文字列としてですか? それとも、最初から数値としてですか?

xenotactic
質問者

お礼

atoi関数を用いたらできました。 ありがとうございました。

xenotactic
質問者

補足

数値としてでお願いします。

関連するQ&A

  • 4桁の数字以外を入力したらエラーを表示したいです

    if文とwhile(for)文の範囲の課題で4桁の数字を入力してどうこうというプログラムを作っています。 課題には書かれていませんが、4桁の数字以外を入力したときにエラーを表示させるにはどんな方法がありますか? 10000以下をはじけばいいんじゃないかと思ったのですが、これだと「0001」などもはじかれてしまうようでして、アルファベットや記号が含まれるものも同時にはじきたいのですが、何か良い方法がわかる方いましいたら、ぜひ解説をお願いします。 なお課題では、理解していれば習っていない関数も使っていいと書かれていました。こんな関数を使ってみては?というものがあれば教えていただけるとうれしいです。

  • excelで数字列から4桁ずつ分けて表示させたい

    excelを使って次のようなことをしたいのですが、うまくいきません。 あるセルに 0123456789123456 と16桁の数字列を入力すると 別の表の4つのセルにそれぞれ 0123 4567 8912 3456 と表示される。 字数が15桁を超えるとexcelが認識してくれないのでそれにも困っています。 どうすればよいのかご教授よろしくお願いします。。

  • accessのフィールドに10桁の数字は入らない??

    あるCSVからAccessのテーブルに読みこんだのですが 一部のフィールドで文字の欠落がありました。 元のCSVの内容どおりに、手入力で欠落した箇所に 値を入れようとしたのですが、どうも9ケタの数字は入るのですが 10桁の数字は入らないようでエラーが出ます。 ★メッセージは以下の通りです。  このフィールドに入力した値が正しくありません。  たとえば、数値型のフィールドに文字列を入力しました。 Accessの仕様として、数字の桁数制限があるのでしょうか? また、解決策は何かないでしょうか? XP2、ACCESS200です

  • 有効数字2桁に関して

    次の計算を有効数字2桁で求めよとあって 窒素と酸素を物質量比1:3にしてすべて完全に反応させたところ 標準状態で水素が13.4l消費された。生じたアンモニアの質量を求めよ ここで反応したH2のモル数は13.4/22.4なんですが計算すると0.59・・・ とでます。しかし参考書に≒0.60と書かれていてその数値でNH3の質量の答えが出されています。 0.59・・・で計算した時と答えがずれるのですが、 有効数字2桁で求めよとかいてあるのだから0.6でなく0.59で求めるべきだと思うのですがどこがおかしいのでしょうか?

  • エクセルで、頭に0をつけて数字の桁を揃える方法

    エクセルで、必ず5桁の数字を入れる列があるとします。 ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。 任意文字として5桁の数字にしたいのですが、 何かいい方法はありませんでしょうか? 例) A列 A列 50      00050 1000  ⇒  01000 11111    11111 どうぞよろしくお願いいたします。

  • Excelの数字の文字列入力で

    Excel2003です。 セルに   "651,652,653" のような3ケタ分の数字とカンマの文字列を入力しようとすると    651652653 という数値にみなされてしまいます。 入力するときに、文字列の先頭に ’ を付けると文字列に みなしてもらえるのですが、つい忘れてしまい面倒です。 セルに指定などで設定する方法は何かありますでしょうか。 よろしくお願いします。

  • 入力チェック・・・

    何が違うのかわからないんです・・・ どうか教えてください。 /**== 入力値をチェック ==**/ /* 入力値が0以下の数字、或いは数字以外の文字の場合 */ while((number <= 0) || (isdigit(number) == 0)) { /* エラーメッセージを表示します */ printf("2以上の数字を入力してください。\n"); /* 数を入力させる準備メッセージを表示 */ printf("number = "); /* キーボードからの入力を受け付ける */ fgets(str, sizeof(str), stdin); /* 文字列を数値に読み替える */ number = atoi(str); } …とソースを書いたのですが、無限ループになってしまいます…。 isdigitがうまく働いていないようなのですが、どう したらよいか、わかりません…。 解決方法を教えてください!

  • InDesign 正規表現 一桁の数字

    5(20.0%) 0(0.0%) 10(40.0%) こんな感じで一桁と二桁の数字が混じっている文字列の 一桁の数字の前に数字のスペースをつけて桁揃えしたいです 検索: (?<=[^\d\.])(\d)(?=\D) 置換: ~/$1 こんな感じで書いたんですがこれでは 文字列の一番最初のものが引っかかりません 「行頭または数字かドット以外に続く」 というのを表現できればいいのですが いろいろ試してもうまくいきません どう書けばいいのでしょうか

  • 二桁の自然数のうち各位の数字の積が偶数になる数、各

    二桁の自然数のうち各位の数字の積が偶数になる数、各位の数字の積が3で割り切れて0でない数は何個か。解説お願いします

  • エクセル 12桁以上の数字の入力について

    エクセルのセルに12桁以上の数字を入力(貼り付けも含む)すると 1.23457E+11 のように表示されます。入力したとおりに表示させるにはどのような設定をすればいいか教えてください。 セルの書式設定の表示形式を「数値」などに変更するか ’を付けて文字列として入力すればいいのは分かっていますが面倒なので何もしないで最初から123456789012 のように表示させたいのです。セルの幅を広げても1.23457E+11のままです。 数式バーには 123456789012 のように正しく表示されています。セルの書式は「標準」になっていてサンプルは1.23457E+11となっています。 よろしくお願いします。

専門家に質問してみよう