C语言中scanf()函数的小结

本文深入解析了C语言中scanf函数的使用细节,包括其返回值的含义、结束条件及如何处理字符输入中的特殊问题。文章提供了多种防止scanf接收回车的解决方案,适合初学者和进阶者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.scanf()的返回值

scanf函数是有返回值的,接受一个变量返回1。

如:c=scanf("%d%d",&a,&b);

若输入的全是整数,则c为2;

若全是字符,则c为0;

因为scanf在占位符存在的情况下,只接受符合占位符的数据。

2.scanf的结束

如果不是%c,则以空格,回车,tab键结束,或非法字符结束;

当为%c时,以回车结束,会把回车传值给变量,可能会出现问题。

不让变量接收回车的方法:

(1)

getchar();

用getchar()直接吸收掉回车;

注意:因为不是char i;i=getchar();光是getchar();所以回车并没有被变量接收,所以我们常说用getchar()函数吸收回车;

(2)已知字符长度;

scanf("%2c");

(3)scanf("%[^\n]",str);

格式控制符的基本格式为:%[scanfset]

scanfset 有两种形式:一种是以非 “^” 字符开头的 scanset , 表示在读入字符串时将匹配所有在 scanfset 中出现的字符,遇到非scanfset 中的字符时输入就结束;另外一种形式是以 “^” 字符开头的scanfset ,表示在读入字符串时将匹配所有不在scanfset 中出现的字符,遇到scanfset 中的字符输入就结束。

(3)scanf("\n%c",str);

可以在%前面加回车,但要加在双引号中。

此方法可以活学活用,如:要输入n组长度未知的数。

n直接用scanf();输入,并用for循环接收每组数,

用:

scanf("%d%c",&a[i][j],&c);//其中c为已经定义的字符变量

if(c=='\n')
    break;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值