作者JonathanWang (尹儿)
看板b95902HW
标题Re: [作业] 使徒2...
时间Wed Sep 27 16:13:46 2006
※ 引述《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
1F:推 mt01020:那个 我不太了解你的意思?? 不过我用其他方法解决了^^ 09/27 17:08
2F:→ mt01020:还是感谢你~~~~~ 09/27 17:09
3F:推 sasbluesea:是有空格或换行或移一堆就重读? 09/27 21:30