scanf是什么意思:C语言中读取键盘输入的基础输入函数

scanf是什么意思:C语言中读取键盘输入的基础输入函数

刚接触C语言编程的那段日子,对着满屏陌生的代码头疼不已,最纠结的就是搞不懂scanf是什么意思,每次写输入代码都只能照搬教程模板,压根不知道这行代码到底在程序里承担着什么样的工作,稍微改一点内容程序就直接报错。那时候总觉得这是个高深的编程指令,越用越懵,写出来的代码要么读取不到输入,要么运行后直接闪退,白白浪费了好几个晚上的练习时间。

课堂作业要求写一个两数求和的小程序,整体逻辑特别简单,定义两个整型变量,输入两个数字,计算总和后打印结果。printf的用法很快就摸透了,唯独scanf这一行始终出问题,不管怎么输入数字,程序最后输出的结果永远是乱码和随机数字,完全达不到预期效果。

当时对着黑屏发呆了十几分钟。

反复对照课本的代码逐字核对,字母拼写、括号、引号全都一模一样,可我的代码就是没法正常读取键盘输入。死磕半天找不到问题,就开始胡乱修改代码,试着删掉引号里的格式符号,又试着调换变量的位置,甚至随便增减空格,结果越改越乱,最后运行程序直接弹出报错窗口,彻底没法运行。那时候完全摸不着头脑,只觉得这个函数格外鸡肋,明明写法一模一样,别人的代码能跑,我的就全是问题。

折腾好久才搞明白,scanf根本没有复杂的底层逻辑,它就是C语言里专门用来接收键盘手动输入数据的工具,和负责输出内容的printf刚好互补。printf是把程序里的数据展示在电脑屏幕上,而scanf是反过来,把我们手动敲进键盘的数字、文字,传输储存到程序提前定义好的变量当中,这就是它最核心、唯一的作用,没有任何多余功能。

之前一直报错的根本原因,是完全忽略了两个新手必踩的细节。一是格式控制符必须和变量类型对应,定义的是int整型变量,就必须用%d,用%f、%s全部都会读取失败;二是普通变量前面必须加取地址符&,当初偷懒省略了这个符号,导致程序根本找不到储存数据的位置,自然读取不到任何输入内容。

很多初学编程的人都会犯和我一样的错,只会机械抄写代码,从来不理解每一段指令的实际意义。总觉得scanf是固定公式,照着写就万事大吉,根本不会去关注格式匹配、符号书写这些细碎的点,最后就会出现各种莫名其妙的运行bug,越写越怀疑自己的基础能力。

修正完符号和格式的那一刻,程序终于正常运行了。手动输入两个数字,按下回车后,屏幕精准算出相加的结果,那一刻才真正摆脱了书本的死模板,实打实的弄懂了这个函数的用法。其实它的使用门槛特别低,没有花哨的拓展功能,对于入门学习者来说,不需要深究底层编译原理,只要把控好格式和符号两个细节,就能稳定使用。

那天改完代码保存好文件,关掉编译器的时候,电脑桌面还停留在编程软件的黑色编辑界面,随手点开了桌面的刷题文档,打算把同类输入输出的练习题全部过一遍。

了解更多百科知识请访问 百科