掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.26539

数値かどうかのチェック
投稿者---トルコ@(2006/03/31 13:56:11)


はじめまして。トルコ@という者です。
質問なんですが、入力したものをshort型の変数 「sno」に入れ、「sno」に入れられたものが数値かどうかを判定したいのですが、どのように記述すればよろしいでしょうか?
文字列ではないので、isdigitも使えず、scanfで返ってきた値も、「kkk」と入力した時は偽が返ってくるのですが、「9d9d」と入力すると、真の結果が返ってきてしまいます。アドバイス宜しくお願いしますm(_ _)m

環境:Windows2000、Microsoft Visual C++ 6.0


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:数値かどうかのチェック 26540 REE 2006/03/31 14:10:54
<子記事> Re:数値かどうかのチェック 26541 iijima 2006/03/31 14:11:25
<子記事> Re:数値かどうかのチェック 26542 トルコ@ 2006/03/31 14:47:40


No.26540

Re:数値かどうかのチェック
投稿者---REE(2006/03/31 14:10:54)


>質問なんですが、入力したものをshort型の変数 「sno」に入れ、「sno」に入れられたものが数値かどうかを判定したいのですが、どのように記述すればよろしいでしょうか?
>文字列ではないので、isdigitも使えず、scanfで返ってきた値も、「kkk」と入力した時は偽が返ってくるのですが、「9d9d」と入力すると、真の結果が返ってきてしまいます。アドバイス宜しくお願いしますm(_ _)m

snoには数値しか入りませんので、snoをいくら見ても判断できません。
ちなみにscanfの戻り値は真偽ではなく、変換されたフィールド数です。
9d9dの場合には、9の部分がsnoに代入され、1が返ります。
scanfは入力のエラーチェックをするのに向いていないので、
代わりに、fgets + strtolを使うとよいでしょう。



この投稿にコメントする

削除パスワード

No.26541

Re:数値かどうかのチェック
投稿者---iijima(2006/03/31 14:11:25)


文字コードも内部表現としては整数値ですから、short型の変数に格納した後でそれ
が文字コードであるかどうかを判定することはできません。
入力の際、一旦文字列として読み込み、そこで数値を表し得る文字列(数字の並び)で
あるかどうかを判定するしかないと思います。


この投稿にコメントする

削除パスワード

No.26542

Re:数値かどうかのチェック
投稿者---トルコ@(2006/03/31 14:47:40)


>REE様・iijima様
アドバイスありがとうございましたm(_ _)m
文字列を使用するべきですか……早速やってみます。
コードの方、完成次第載せますので。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧