c语言库函数scanf,计算机二级考试C语言辅导:关于标准库函数scanf

cb10c5c07ae058fec2d7d8bdef4c0da7.png

对scanf的不了解,导致程序出错,考试大把scanf的具体用法整理出来,希望大家可以共同进步,有什么不对的地方可以提出来。

int scanf(char *format,...);

这应该是scanf的标准形式。先说说关于他的返回值的问题。

库函数几乎都是有返回值的,有些人可能很奇怪,怎么很少人用过scanf的返回值呢?

scanf会返回成功接收到的变量数量的值。比如scanf("%d",&j"),与scanf("%d=",&j),如果接受成功的话返回值都是1

用如下语句作了测试

#include

int main (){

int j;

printf ("%d",scanf("%d\n",&j));

return 0;

}

如果你开始就输入回车,程序会继续等待你输入,因为在输入数字的时候,scanf会跳过空白字符。(the c programming language 上说,scanf实际上是用getchar()接受由数字组成的字符串,再转换成数字)

如果我输入ctrl-z(unix上是ctrl-d)则会返回-1(随编译器而定).这实际上就是常量EOF的值,也就是所谓的返回eof

如果我键入的不是数字返回值就是0。但是如果我输入浮点数,又会怎么样呢?

我举的例子中同样会返回1,但是缓冲区会留下垃圾,如果是scanf("%d%d",&a,&b);则会出错。

这是可以使用一个库函数fflush(stdin)来清除缓冲。不过貌似雨中飞燕大姐说这个用法是非标准的。K&R,只是说行为没有定义,但我们可以使用while((c=getchar())!='\n'&&c!=EOF);同样可以清除后面的垃圾!

2829f2ca24f0d0090cbba57f30759f23.png

计算机二级考试C语言辅导:关于标准库函数scanf.doc

下载Word文档到电脑,方便收藏和打印[全文共608字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值