核心结论是 scanf 是 C 语言标准输入库函数,作用是从键盘读取用户输入的数据,按照格式控制字符串里的占位符,把读到的数据存入指定变量内存地址,使用这个函数必须引入 stdio 头文件,写变量的时候绝大多数情况前面要加取地址符号 &,如果漏掉 & 会造成程序异常崩溃,很多初学者写 scanf 最常见错误就是忘记 &,还有格式符和变量类型不匹配,这两类问题是 scanf 学习阶段最高频报错来源。这个函数底层是从标准输入缓冲区读取数据,输入回车之后数据才会送入缓冲区被 scanf 读取,输入内容和格式控制串匹配成功就完成赋值,匹配失败 scanf 就会停止读取,返回成功读取到的数据项个数,这个返回值经常用来判断用户输入是否合法。
一 基础语法格式
scanf 格式控制字符串 地址列表
格式控制字符串里面核心是格式占位符,不同数据类型对应不同占位符,地址列表就是存放输入数据的变量地址,多个变量之间用逗号隔开。
二 常用格式符对照表
| 格式符 | 对应数据类型 | 说明 |
|---|---|---|
| %d | int 整型 | 读取十进制整数 |
| %f | float 单精度浮点 | 读取小数 |
| %lf | double 双精度浮点 | 读取双精度小数 |
| %c | char 字符 | 读取单个字符,会读取空格回车 |
| %s | char 字符数组 | 读取字符串,遇到空格回车停止 |
| %ld | long long 长整型 | 读取长整数 |
| %u | unsigned int | 读取无符号整数 |
三 基础使用步骤
第一步 在代码顶部写 include stdio.h,因为 scanf 属于 stdio 头文件里面的函数,不引入头文件编译会警告或者报错。
第二步 提前定义好要接收输入的变量,比如 int a float b char c。
第三步 编写 scanf 语句,格式占位符和变量类型一一对应,变量前面加上 & 取地址符,字符串数组例外,数组名本身就是地址不用加 &。
第四步 运行程序,控制台等待用户输入,输入完成按下回车,scanf 读取数据赋值给变量。
第五步 后续代码可以使用已经赋值的变量做运算或者打印输出。
四 典型代码示例
读取一个整数
int num
scanf % d num
读取两个整数
int a b
scanf % d % d a b
读取浮点数
double price
scanf % lf price
读取字符串
char str 20
scanf % s str
五 重点易错点说明
第一 除了字符数组,普通变量必须写 &,int float double 变量漏掉 & 是最经典错误。
第二 % c 会把缓冲区残留的空格回车当成字符读进去,连续读取多个字符的时候,要提前清理缓冲区。
第三 % s 读取字符串遇到空格就终止,想要读取带空格的整行内容,不能直接用 % s,需要改用其他输入函数。
第四 格式控制字符串里面如果写了普通字符,用户输入的时候必须原样输入对应字符,比如 scanf % d,% d a b 用户输入就要带上逗号。
第五 scanf 有返回值,返回成功匹配的项目数量,可以利用这个返回值判断输入是否正确,防止非法输入导致程序逻辑出错。
六 进阶使用要点
可以设置宽度限制,比如 %3d 代表最多读取三位整数。
可以使用抑制符星号,读取数据但是不保存到变量。
输入缓冲区残留问题,连续 scanf 读取字符的时候,上一次回车留在缓冲区,下一次 % c 直接读到回车,解决方式可以加空格,或者调用清理缓冲区语句。
【常见问题】
问题 1 scanf 为什么读取整数正常,读取字符的时候自动跳过或者读到回车
回答 1 scanf 的 % c 格式符不会自动跳过空白字符,上一次输入按下回车之后回车留在缓冲区,下一次 scanf 读取字符就会读到回车,解决方法是在 % c 前面增加空格,让 scanf 自动跳过空白字符。
问题 2 scanf 里面变量什么时候不需要加 &
回答 1 scanf 读取字符串的时候,字符数组名本身代表首地址,所以不需要再加 &,除此之外普通 int float double char 单个变量,使用 scanf 都必须添加 & 取地址符号。
问题 3 scanf 返回值有什么作用
回答 1 scanf 返回成功读取匹配的数据项个数,可以用来校验用户输入是否合法,比如要求输入两个数字,如果 scanf 返回值不等于 2,就代表输入错误,可以增加判断分支处理异常输入。
【免责申明】
本文为 C 语言 scanf 函数通用教学科普,不同编译器对 scanf 的兼容行为略有差异,正式项目开发请参考对应编译器官方文档。
本文来自作者[乡物识考]投稿,不代表大伙搜网立场,如若转载,请注明出处:https://www.dahuoso.com/shujy/202611/664507.html
评论列表(4条)
我是大伙搜网的签约作者“乡物识考”!
希望本篇文章《scanf 怎么用 C 语言输入函数详解》能对你有所帮助!
本站[大伙搜网]内容主要涵盖:经验、百科、常识、知识、问答
本文概览:核心结论是 scanf 是 C 语言标准输入库函数,作用是从键盘读取用户输入的数据,按照格式控制字符串里的占位符,把读到的数据存入指定变量内存地址,使用这个函数必须引入 stdio 头文件,写变量的时候绝大多数情况前面要加取地址符号 &,如果漏掉 & 会造成程序异常崩溃,很多初学者写 scanf 最常见错误就是忘记 &,还有格式符和变量类型不匹配,这两类问题是 scanf 学习阶段最高频报错来源。这个函数底层是从标准输入缓冲区读取数据,输入回车之后数据才会送入缓冲区被 scanf 读取,输入内容和格式控制串匹配成功就完成赋值,匹配失败 scanf 就会停止读取,返回成功读取到的数据项个数,这个返回值经常用来判断用户输入是否合法。