被忽略scanf函数应用技巧 scanf返回值被忽略怎么解决


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

    推荐阅读