详解格式化输入函数scanf

发布时间:2023年12月20日

C语言中常用的输入可以有多种方式,如scanf(),getchar(),gets()。

它们的功能都类似(获取键盘输入的数据),但scanf()因功能使用、函数简单,而深受编程者喜爱。

scanf()函数功能:?执行格式化输入(用户可以按照指定格式输入数据)

scanf()函数原型:?int?scanf(char?*format[,argument,...]);

scanf()从标准输入设备(通常指键盘)?读取输入的信息,并将读入任何固有类型的数据自动变换成适当的机内格式。其格式为:?scanf("<格式化字符串>",<地址表>);scanf()函数返回成功赋值的数据项数,出错时则返回EOF。例如以下程序

int?mian(void)

{

int?a;

scanf(“%d”,&a);

return?0;

}

当程序运行到scanf(“%d”,&a)时会阻塞,等待键盘输入。如果我们在键盘上按下“5”、“7”然后回车了,那么“5”、“7”、回车键“\n”都被逐一放入缓冲区里,又由于回车键是特殊的字符(可实现清除行缓冲),它先将字符'\n'添加到缓冲区,随后便清除缓冲区?,将其中的所有字符发送到一个叫做输入列表的地方?,scanf函数以及其他标准输入函数便会立刻从输入列表中获取内容。

上述程序按照%d的规则从输入列表中获取字符?,它获取了'5'、'7',并且将其转变为整数57,存入了变量a中。

如果我们将程序改为以下形式,

int?mian(void)

{

char?a[10];

scanf(“%s”,a);

return?0;

}

如果我们还是在键盘上按下“5”、“7”然后回车了,那么“5”、“7”、回车键“\n”还是一样被逐一放入缓冲区里;又由于回车键是特殊的字符(可实现清除行缓冲),它先将字符'\n'添加到缓冲区,随后便清除缓冲区?,将其中的所有字符发送到一个叫做输入列表的地方?,scanf函数以及其他标准输入函数便会立刻从输入列表中获取内容。

程序按照%s的规则从输入列表中获取字符?,它获取了'5'、'7',并且将其转变为字符串“57”,存入了变量a中。

总之,我们输入的数据及缓冲中的数据都是一致的,只不过scanf函数根据不同的格式进行了不同的转换而已(省去了程序员自己转换数据的麻烦)。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。

(点击找小助理免费领取)扫码进群领资料icon-default.png?t=N7T8https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html

文章来源:https://blog.csdn.net/D_ovis/article/details/135097370
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。