流输入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后面会一直等待下一个非空白字符串出现才会接着执行;
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后面会一直等待下一个非空白字符串出现才会接着执行;
相关文章推荐
- Note For Linux By Jes(8)-Linux 账号管理与ACL权限控制
- listview中点击item进行Item中的控件更新操作。
- linux-shell 让系统工作在英文环境下
- Java内存
- JAVA问题总结之4--各大数据类型能存的最大最小值
- Java的Calendar
- 模板维护-子模板解析
- 使用org.apache.commons.logging打日志注意事项
- linux 第一天
- 模板维护-子模板解析
- C#操作xml文件
- 数据结构(Java语言)——BinaryHeap简单实现
- 事务是什么?事务的四大特性? jdbc如何做事务处理?
- kqueue例子
- 查找整数组成字符串的下一个字符串
- linux下web安装
- 正则表达式常用
- C++标准库和标准模板库
- vs操作快捷键
- Oracle代码段的使用