为了说明问题,先定义两个变量
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后面会一直等待下一个非空白字符串出现才会接着执行;
流输入cin与格式化输入scanf区别
最新推荐文章于 2024-04-30 17:17:06 发布