看板 Programming 關於我們 聯絡資訊
※ 引述《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