scanf();需要注意的几点

对于这个函数,你必须小心在意几点:

首先:由于scanf函数的实现原理,所有标量参数的前面必须加上一个“&”符号。这点以后再解释。数组参数前面不需要加上“&”符号(如果你加上也没有什么不妥的,所以如果你喜欢的话,也可以加上)。但是数组参数中如果出现了下表引用,也就是说实际参数是数组的某个特定元素,那么它的前面也必须加上“&”符号。在后面会解释在标量参数前面加上“&”符号的必要性。

关于标量的解释,根据网上的资料,C语言的类型中包含了两种类型,标量和聚集类型,简单的值类型和指针类型都属于标量,而数组和结构体等属于剧集类型。

例如:

scanf("%d", &colunms[num]);

格式代码%d表示需要读取一个整型值。字符是从标准输入读取,前导空白将被跳过。然后这些数字被转换为一个整数,结果存储于指定的数组元素中。我们需要在参数前加上一个“&”符号,因为数组下表选择的是一个单一的数组元素,它是一个标量。

再者:需要注意的地方时格式代码,它与printf函数的格式代码颇为相似却又并不完全相同,所以很容易引起混淆。使用所有格式代码(除了%c之外)时,输入值之前的空白(空格、制表符、换行符等)会被跳过,值后面的空白表示该值的结束。因此,用%s格式代码输入字符串时,中间不能包含空白。

最后:我们在程序中如果不确定循环的次数,那么我们往往会使用while来循环。如下:

while(scanf("%d%d", &m, &n) == 2)

{}

但是现在就出现问题了,当我们测试程序时会发现,程序无法输出结果,就算我们怎么按回车都无效。那么怎么才能让程序输出结果呢?

在window下,输入完了之后先按Enter键,再按Ctrl + Z 键,之后再按Enter键,即可结束输入并输出结果。

在linux下,输入完了之后直接按Ctrl + D键即可结束输入。

这里忘了说了,scanf函数的返回值是正确转换的值的个数。正确转换并存储了几个值到变量中,就返回几

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值