Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請教交談式 C語言問題

0 views
Skip to first unread message

過客

unread,
Apr 8, 1999, 3:00:00 AM4/8/99
to
規定使用者輸入數字
遇到字母或其他符號則出現錯誤訊息並要求重來一次

我想到一個利用ASCII的方法
不過會有範圍的限制
char N;

if ( N<47 || N > 64 )
printf("plz enter number");
(若輸入不是0~9的數字 反應錯誤訊息)

再把所得的數減去48即可得ASCII對應INT的真值
不過有範圍限制吧
請高手提供其他方法
如宣告
int N; 或 long N;時
要怎麼處理?
因為N 我還要拿來做別的運算
必須至少65535以上的通用性
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: tknet.tku.edu.tw

一頭好熊

unread,
Apr 9, 1999, 3:00:00 AM4/9/99
to
==> 在 macpa...@bbs.cs.nthu.edu.tw (過客) 的文章中提到:

> 規定使用者輸入數字
> 遇到字母或其他符號則出現錯誤訊息並要求重來一次
> 我想到一個利用ASCII的方法
> 不過會有範圍的限制
> char N;
> if ( N<47 || N > 64 )
> printf("plz enter number");
> (若輸入不是0~9的數字 反應錯誤訊息)
> 再把所得的數減去48即可得ASCII對應INT的真值
> 不過有範圍限制吧
> 請高手提供其他方法
> 如宣告
> int N; 或 long N;時
> 要怎麼處理?
> 因為N 我還要拿來做別的運算
> 必須至少65535以上的通用性

判斷是否為數字可以用 ctype.h 中的 isdigit() 巨集來作啊...
而且您說得限制其實一點也不是問題, 你可以把 char 變數的值減掉 48後
丟到 int 或 long變數中再做運算不就可了?
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

過客

unread,
Apr 9, 1999, 3:00:00 AM4/9/99
to
※ 引述《Justi...@cis.nctu.edu.tw (一頭好熊)》之銘言:

> ==> 在 macpa...@bbs.cs.nthu.edu.tw (過客) 的文章中提到:
> > 規定使用者輸入數字
> > 遇到字母或其他符號則出現錯誤訊息並要求重來一次
> > 我想到一個利用ASCII的方法
> > 不過會有範圍的限制
> > char N;
> > if ( N<47 || N > 64 )
> > printf("plz enter number");
> > (若輸入不是0~9的數字 反應錯誤訊息)
> > 再把所得的數減去48即可得ASCII對應INT的真值
> > 因為N 我還要拿來做別的運算
> > 必須至少65535以上的通用性
> 判斷是否為數字可以用 ctype.h 中的 isdigit() 巨集來作啊...
> 而且您說得限制其實一點也不是問題, 你可以把 char 變數的值減掉 48後
> 丟到 int 或 long變數中再做運算不就可了?

可是在char變數減掉48之前
就要先判斷值是否 N<47 || N>xx來判聽其是否為字元啦
若為字元 接下來減去48又有什麼意義?
至於isdigit() 好像只能判斷一個位數吧
我查help沒有也沒有詳細範例說
請注意需要65535以上的通用性

一頭好熊

unread,
Apr 9, 1999, 3:00:00 AM4/9/99
to
==> 在 macpa...@bbs.cs.nthu.edu.tw (過客) 的文章中提到:
> ※ 引述《Justi...@cis.nctu.edu.tw (一頭好熊)》之銘言:

> > 判斷是否為數字可以用 ctype.h 中的 isdigit() 巨集來作啊...
> > 而且您說得限制其實一點也不是問題, 你可以把 char 變數的值減掉 48後
> > 丟到 int 或 long變數中再做運算不就可了?
> 可是在char變數減掉48之前
> 就要先判斷值是否 N<47 || N>xx來判聽其是否為字元啦
> 若為字元 接下來減去48又有什麼意義?
> 至於isdigit() 好像只能判斷一個位數吧
> 我查help沒有也沒有詳細範例說
> 請注意需要65535以上的通用性

那你乾脆就用 scanf 去抓不就可了.... 幹嘛那麼麻煩呢?

過客

unread,
Apr 9, 1999, 3:00:00 AM4/9/99
to
※ 引述《Justi...@cis.nctu.edu.tw (一頭好熊)》之銘言:

> ==> 在 macpa...@bbs.cs.nthu.edu.tw (過客) 的文章中提到:
> > 可是在char變數減掉48之前
> > 就要先判斷值是否 N<47 || N>xx來判聽其是否為字元啦
> > 若為字元 接下來減去48又有什麼意義?
> > 至於isdigit() 好像只能判斷一個位數吧
> > 我查help沒有也沒有詳細範例說
> > 請注意需要65535以上的通用性
> 那你乾脆就用 scanf 去抓不就可了.... 幹嘛那麼麻煩呢?

不不....用scanf才需要考慮這個問題
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: cave4.ck.tp.edu.tw

0 new messages