C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。
之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
在写代码时总是不小心在这里犯错,所以特意查了一下这个函数,并且做以整理,现分享给大家。
scanf()函数的参数输入类型不匹配问题这是我在百度时见到的问题,还没遇到。
拿来整理,以备日后需要。
#include<stdio.h>main(){ int a=123; char c=’t’; printf(“input “); scanf(“%d%c”,&a,&c); scanf(“%d%c”,&a,&c); scanf(“%d%c”,&a,&c); printf(“%d %c “,a,c); return 0;}当输入a 回车 后,会直接跳过下面2个scanf语句,直接输出为123t原因:对于scanf(“%d%c”,&a,&c),scanf语句执行时,其中有一个参数不匹配,那就从这个地方跳出,忽略这个scanf后面所有的参数,而去执行下一条语句。
解决方法:scanf()函数执行成功时的返回值是成功读取的变量数,也就是说,你这个scanf()函数有几个变量,如果scanf()函数全部正常读取,它就返回几。
但这里还要注意另一个问题,如果输入了非法数据,键盘缓冲区就可能还个有残余信息问题。
比如:#include <stdio.h> main(){ int a=123,b; while(scanf(“%d%d”,&a,&b)!=2) fflush(stdin); printf(“%d %d “,a,b); return 0;}还有个办法:只要用scanf(“%[^ ]”,strings); 就可以了。
很神奇吧。
还要注意方括号两侧都不能加空格。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)