scanf和[]
由于默认状态在用scanf接受字符串时,会以空格和回车作为结束符。
如何让scanf接受空格?
那就用scanf("%[^\n]s",str);这个语句吧。
^表示非,也就是[]中的东西在起作用,^\n表示,只要是非回车,就全部接收,所以,这个功能还有下面的用法
scanf("%[Hoj]s",str);
如果input: Hoiabjo
那么str中字符,将是Hojo. 也就是说,只接受Hoj三种字符。
如果只输入数字,那么可以用[0-9],而不需要[0123456789]
但是这种用法不能和while结合起来用,不然就会出现错误了。为什么?我也不知道。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include "iostream" #include "string" #include "cstdio" #include "cstring" using namespace std; int main() { char str[100]={0}; scanf("%[^\n]s", str); printf("%s\n", str); }
posted on 2012-04-20 15:24 More study needed. 阅读(204) 评论(0) 编辑 收藏 举报