[問題] 輸入資料的型態判別 C

看板Programming作者 (homestay)時間16年前 (2009/09/12 09:31), 編輯推噓3(303)
留言6則, 5人參與, 最新討論串1/2 (看更多)
大家好 小弟是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

09/12 09:46, , 1F
讀失敗的意思是?
09/12 09:46, 1F

09/12 10:02, , 2F
fgets()完strtok()或sscanf()
09/12 10:02, 2F

09/12 10:17, , 3F
scanf + strchr
09/12 10:17, 3F

09/12 12:19, , 4F
讀失敗是printf印不出東西= ="
09/12 12:19, 4F

09/12 15:43, , 5F
失敗會return -1
09/12 15:43, 5F

09/12 15:44, , 6F
成功return 輸出的characters數
09/12 15:44, 6F
※ 編輯: homestay 來自: 220.133.0.87 (09/12 17:02) ※ 編輯: homestay 來自: 220.133.0.87 (09/12 17:09)
文章代碼(AID): #1AgldQm7 (Programming)
文章代碼(AID): #1AgldQm7 (Programming)