Re: [作業] 使徒2...
※ 引述《joejoe321321 (鴟夷子皮)》之銘言:
: ※ 引述《mt01020 (夢)》之銘言:
: : 那個 我有看到計程網上的問題
: : 可是我的比較不一樣
: : 我是第一次scanf式子時 最後ㄧ個英文字母就沒進去
: : 例如 輸入:a=a+b
: : 他只有感應到:a=a+ (我不會用debug 所以我是直接在scanf後面加一行printf看的)
: : 不知道為什麼會這樣 (我scanf那行寫法也是跟老師打的ㄧ樣)
: : 還有 char應該可以用switch吧? 老師hint用switch 可是我用switch寫怪怪的ㄟ...
: : 寫法是 switch(firstchar){
: : case 'a':
: : ~
: : break;
: : ......
: : }
: : 嗎??
: 問題出在第二行之後的enter = =
: 以下以範例而言
: 第一行的1 2 3(enter)並沒有要接著輸入字元
: 所以沒事
: 可是3(enter)之後馬上要scan 所以會把enter讀進去...
: 接下來存的變數假設是abcde
: 則a = (enter)
: b = 'a'
: c = '='
: d = 'a'
: e = '+'
: 然後'b'會再存進開頭的a 但是在存進去前程式就先開始跑了= =
: ----
: 應該沒有錯吧 昨天我也有這個問題
: ASKII碼讀出來都是10
我習慣都會這樣讀欸:
char ch;
do{
scanf("%c", &ch);
}while( ch==' ' || ch=='\n' || ch=='\t' || ch==.... );
或是如果我確定要讀的一定會是小寫英文字母的話... 那 while 的條件就改成
}while( ch<'a' || 'z'<ch );
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.44
推
09/27 17:08, , 1F
09/27 17:08, 1F
→
09/27 17:09, , 2F
09/27 17:09, 2F
推
09/27 21:30, , 3F
09/27 21:30, 3F
討論串 (同標題文章)