您的位置:首页 > 其它

流输入cin与格式化输入scanf区别

2015-08-24 22:13 260 查看
为了说明问题,先定义两个变量

char str[100];char c;

1.cin>>str与scanf(“%s”,str)都可忽略字符串开始的不可见字符。如果要同时输入前面的输入字符的话,就用gets(str)函数

2.cin>>str 从缓冲区读入整个字符,忽略前面的空格和换行符,但包括最后的转行符;此时在cin>>c的话,输入输出缓冲区没有字符,需要重新输入;

3.scanf(“%s”,str)从缓冲区读入整个字符,忽略前面的空格和换行符,不包括最后的转行符;此时在scanf(“%c”,&c)的话,输入输出缓冲区还有一个字符‘\n’,不需要重新输入,此时的c=’\n’;

4.对于输入连续字符,比如”zhou ming”,cin>>str1>>str2或者scanf(“%s%s”,str1,str2),缓冲区自动将这个字符分成两个子字符串,保存到str1和str2中,不管中间有多少个,或者休想用c来保存中间的空格;

5.空白符的问题:

scanf(“%d\n”,&a),在console输入12程序并不会往下执行,而是等待console继续输入。格式化字符串里的空白符(制表符,换行符,回车符和换页符)起匹配字符串作用,进行匹配的时候,他会一直匹配到下一个非空字符的出现才停止。所以\n后面会一直等待下一个非空白字符串出现才会接着执行;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: