作者flax00298 (NI)
看板C_and_CPP
标题Re: [问题] C语言新手...如何中断WHILE
时间Sun Aug 23 15:30:06 2009
想说的不长不短
请原谅我骗文章数
问问题的原po呢~
我建议您先去看看stdio函数的正确使用方式
包括他到底要输入什麽最後又return什麽
http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
以下的资料都来自上面网站
int scanf ( const char * format, ... );
为什麽是return int?
不觉得很奇怪吗?
我所知道要return char却是会retun int 的时机有一个
就是要装EOF这个整数
来判断是否到了EOF
还有没有其他的case我不知道~因为我也学不久
但是这里的情形完完全全不一样
他整个就不是拿来return你想要的东西
请看说明
Return Value
On success, the function returns the number of items succesfully read.
This count can match the expected number of readings or fewer,
even zero, if a matching failure happens.
In the case of an input failure before any data could be successfully read,
EOF is returned.
英文好繁琐
小弟帮大家翻译一下
他是说
如果你scanf的函数使用过程
没有出错的话
他return的是"
成功读取的项目数"!!!
所以原po的code
会一直return 1(也就是成功读取grade这一个项目)
所以当然永远不会等於Z罗
我也有实际测试过
的确是这样
cout<< scanf("%c%c",&c,&d)<<endl;
的确就是2
虽然我猜原PO已经用别的写法把他弄好了
但是就大家参考用吧
希望对大家有用
有错也请大家指正
如果是我的话
我会while( scanf("%c",&c), c !='Z' )
最後送大家一个笑脸:)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.4.234
※ 编辑: flax00298 来自: 140.112.4.234 (08/23 15:36)
1F:推 nopicnic:谢谢~~~认真看过了,收获很多,感激~ 08/23 19:33
2F:推 VictorTom:c是char?? 那scanf应该&c, c若是指向合法空间的指标, 08/23 20:50
3F:→ VictorTom:那後面应该是 *c!='Z'; 话说, 其实照用 && 应该OK吧@_@" 08/23 20:53
4F:→ VictorTom:啊, 原po本来就没&&, 和前篇推文搞混了....Orz 08/23 20:54
5F:→ flax00298:阿阿打错xdd~因为我不是copy + paste的~抱歉抱歉 08/23 22:18
※ 编辑: flax00298 来自: 140.112.251.212 (08/23 22:18)
6F:→ flax00298:以修正 08/23 22:18