数値判定 – プログラミング – Home

通知
すべてクリア

[解決済] 数値判定


バンヴィ
 バンヴィ
(@バンヴィ)
ゲスト
結合: 18年前
投稿: 19
Topic starter  

いつもお世話になっております
また、自己解決できない問題が発生したためご教授願いたいと思い書き込みさせていた
だきました。
もし同じような質問があり、それが解決済みであればお手数ですが、貼り付けていただ
けたらうれしいです。

早速質問なのですが、

キーボードから入力された文字を判定するプログラムを作成したいと考えています。

if(判定)
{
 整数の処理
}else{
 整数以外の文字列の処理
}

これを基本にしたプログラムを何度かループさせるプログラムを組みたいのですが、
キーボードからの入力の時点で詰まってしまいました。
scanf では、うまく動きません。
ご存知の方、ご教授願います。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> scanf では、うまく動きません。

説明不足。
どんなコードで/どんな時に/どのように うまく動きませんか?


返信引用
バンヴィ
 バンヴィ
(@バンヴィ)
ゲスト
結合: 18年前
投稿: 19
Topic starter  

>説明不足。
>どんなコードで/どんな時に/どのように うまく動きませんか?

申し訳ありません

int text;

scanf(%d,text);

としたところ、誤って数値ではなく文字を入力したところその後の
scanfが全て無視されてしまいました。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

scanfの戻り値に着いて調べてみてください。

もしくは、元から文字列で受け取ってチェックするとか。


返信引用
バンヴィ
 バンヴィ
(@バンヴィ)
ゲスト
結合: 18年前
投稿: 19
Topic starter  

>もしくは、元から文字列で受け取ってチェックするとか。

char a[256];
int text;

scanf(%s, &a);
iSum = atoi(&text);

としたところ、結果がこうなりました。

11111 ・・・・ ○
aaaaa ・・・・ ×
111aa ・・・・ ○ ←
aaa11 ・・・・ ×

矢印の場合もエラーにしたいのですが、一文字づつチェックしていくしかないのでしょ
うか??


返信引用
バンヴィ
 バンヴィ
(@バンヴィ)
ゲスト
結合: 18年前
投稿: 19
Topic starter  

訂正
>char a[256];
char a;


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

参考
http://forums.belution.com/ja/vc/000/327/15s.shtml


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>訂正
%sを指定する場合最低でもchar型領域2つ分は必要です。
(1文字でもNULL文字が加わるため2文字分)

いまはたまたま動いているかもしれませんが、別の領域を壊してしまったりして
動かなくなります。

訂正するなら

>scanf(%s, &a);
>iSum = atoi(&text);

scanf(%s, a);
iSum = atoi(a);

でしょうね。


返信引用
バンヴィ
 バンヴィ
(@バンヴィ)
ゲスト
結合: 18年前
投稿: 19
Topic starter  

>参考
> http://forums.belution.com/ja/vc/000/327/15s.shtml

覗いてみたら同じような質問でした。

お手数をおかけしました。

int CheckNumber( const char* p )
{
while ( *p )
{
if ( !isdigit( *p++ ) )
{
return 0;
}
return 1;
}

このプログラムを参考にさせていただいとところ
文字列の判定もできました。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました