作者bob123 ()
看板Programming
標題Re: [問題] 輸入資料的型態判別 C
時間Sun Sep 13 01:04:07 2009
※ 引述《homestay (homestay)》之銘言:
: 大家好 小弟是C語言的新手.
: 昨天試了一晚還是想不出方法,想拜託大家= =
: 一般輸入資料型態都是既定(應該吧)
: 如scanf必須指定%? gets是直接拿字串等等
: 有的題目的輸入值為:
: 235 3546
: 346346 34577
: 3567 46
: .
: 每行有兩數字中間有空白隔開,若是遇到'.'則結束。
如果確定輸入格式是每行兩數字夾一空白的話..
int a = 0 ,
b = 0 ;
while( scanf("%d %d", &a, &b) )
{
printf(">> %d - %d\n", a, b);
}
: 小弟本以為可以直接用scanf,遇到'.'直接可以轉成符號編碼(int)。
: 但是測試後似乎不行直接轉型態(數字太大可能會改用long)
: 第二個想法是舊資料的方式,用陣列以gets將整行輸入後判斷是否為'.'再轉成數字
: 轉成數字的方式我是用2個迴圈 第一次讀到' '停(空白這樣寫不知有沒有錯)
: 第二次讀到'\0'停
: 結果是:只讀一個數字的版本有成功,可是讀兩個compiler正確 可是讀失敗
compile (v.)
: 冏~
:
: 以上是小弟的問題 不知道大家有沒有比較好或是直接的方法
: 感激不盡T^T
: 感謝大大回答 不過有的指令我不知道用法,正在估狗中
c 的話就 cppreference吧 XD
: 附一下我的寫法,complier沒錯 只是結果是錯的
: void main()
: {
: char str[20];
: while((str[i]=getche())!='.')
: {
: if(((str[i])==' ')||((str[i])=='\n'))
: printf("進入空白或ENTER");
: else{
: printf("進入ELSE");
: }
: ++;
: }
: printf("因為按了.跳出");
: }
: 似乎無法成功讀取enter= =
這邊你可以先試試看印出 按下enter後 getche()傳回的值
跟 '\n' 比較一下
最後再看看 ascii table
會比較清楚喔
有東西出錯我都會先印出來印證一下自己的邏輯 XD
: 是這邊寫法有錯,可是不知道要改成什麼~冏
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.118.65.157
推 homestay:感謝~方法瞞實用的 我剛剛用getche把全 220.133.0.87 09/13 10:42
→ homestay:部打入的字元判斷後再轉乘數字= = 有點呆 220.133.0.87 09/13 10:42