作者homestay (homestay)
站內Programming
標題[問題] 輸入資料的型態判別 C
時間Sat Sep 12 09:31:05 2009
大家好 小弟是C語言的新手.
昨天試了一晚還是想不出方法,想拜託大家= =
一般輸入資料型態都是既定(應該吧)
如scanf必須指定%? gets是直接拿字串等等
有的題目的輸入值為:
235 3546
346346 34577
3567 46
.
每行有兩數字中間有空白隔開,若是遇到'.'則結束。
小弟本以為可以直接用scanf,遇到'.'直接可以轉成符號編碼(int)。
但是測試後似乎不行直接轉型態(數字太大可能會改用long)
第二個想法是舊資料的方式,用陣列以gets將整行輸入後判斷是否為'.'再轉成數字
轉成數字的方式我是用2個迴圈 第一次讀到' '停(空白這樣寫不知有沒有錯)
第二次讀到'\0'停
結果是:只讀一個數字的版本有成功,可是讀兩個compiler正確 可是讀失敗
冏~
以上是小弟的問題 不知道大家有沒有比較好或是直接的方法
感激不盡T^T
感謝大大回答 不過有的指令我不知道用法,正在估狗中
附一下我的寫法,complier沒錯 只是結果是錯的
void main()
{
char str[20];
while((str[i]=getche())!='.')
{
if(((str[i])==' ')||((str[i])=='\n'))
printf("進入空白或ENTER");
else{
printf("進入ELSE");
}
++;
}
printf("因為按了.跳出");
}
似乎無法成功讀取enter= =
是這邊寫法有錯,可是不知道要改成什麼~冏
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.0.87
推 KanoLoa:讀失敗的意思是? 114.42.18.127 09/12 09:46
推 tingyushyu:fgets()完strtok()或sscanf()122.117.237.194 09/12 10:02
推 bob123:scanf + strchr 140.120.61.206 09/12 10:17
→ homestay:讀失敗是printf印不出東西= =" 220.133.0.87 09/12 12:19
→ kuninaka:失敗會return -1 218.164.144.26 09/12 15:43
→ kuninaka:成功return 輸出的characters數 218.164.144.26 09/12 15:44
※ 編輯: homestay 來自: 220.133.0.87 (09/12 17:02)
※ 編輯: homestay 來自: 220.133.0.87 (09/12 17:09)