C 程序设计教程(10)—— 数据输入函数(scanf)用法详解

20 篇文章 22 订阅
订阅专栏
本文是C程序设计教程的一部分,详细介绍了数据输入函数scanf的用法,包括函数格式、格式字符和使用要点。示例代码解释了如何从键盘输入各种类型的数据,如整数、浮点数和字符串,并讨论了输入分隔符、格式说明符和错误处理等情况。
摘要由CSDN通过智能技术生成

C 程序设计教程(10)—— 数据输入函数(scanf)用法详解

在这里插入图片描述

该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。

目录

  • C 程序设计教程(10)—— 数据输入函数(scanf)用法详解
    • 一、scanf 函数的格式
    • 二、格式字符
    • 三、scanf 函数的使用要点

scanf 函数称为格式输入函数,用 scanf 函数可以从键盘输入任何类型的数据。

一、scanf 函数的格式

scanf 函数是一个标准的格式输入函数,该函数原型包含在标准输入输出头文件 stdio.h 中。scanf 函数的格式如下:

scanf("格式控制字符串",地址列表);

说明:

(1)格式控制字符串的含义与 printf 函数相同。

(2)地址列表是由若干个地址组成的序列,可以是变量的地址或字符串的首地址等。

普通变量的地址由 & 运算符来实现,格式为:

&变量名

例如:

#include<stdio.h>
int main() {       
	int a,b,c;
	float f1,f2,m;
	scanf("%d%d",&a,&b);  //输入a和b的值时用空格隔开 
	c=a+b;
	scanf("%f,%f",&f1,&f2);//输入f1和f2的值时用逗号(,)隔开 
	m=f1+f2;
	printf("c=%d\n",c);
	printf("m=%f\n",m);
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

二、格式字符

scanf 函数的格式控制字符串也是以 % 开始,以一个格式字符结束,中间可以插入附加的格式说明符。scanf 函数用到的格式字符如下表所示:

格式字符说明
d用来输入十进制整数
o用来输入八进制整数
x用来输入十六进制整数
c用来输入单个字符
s用来输入字符串,将字符串送到一个字符数组中,在输入时以非空字符开始,以第一个空白字符结束。字符串以串结束标志 \0 作为其最后一个字符。
f用来输入实数,可以用小数形式或指数形式输入
e与 f 作用相同,e 与 f 可以替换

scanf 函数附加的格式说明字符如下表所示:

字符说明
l用于输入长整型数据(可以用 %ld、%lo、%lx),以及 double 型数据(用 %lf 或 %le)
h用于输入短整型数据(可以用 %hd、%h0、%hx)
m指定输入数据所占宽度(列数),遇空格或不可转换字符则输入结束
*表示本输入项在读入后不赋给相应的变量

说明:

(1)可以指定输入数据所占列数,系统自动按指定的列数截取所需数据。

例如:

#include<stdio.h>
int main() {       
	int a,b;
	char ch1,ch2;
	scanf("%3d%3d",&a,&b);
	scanf("%3c%3c",&ch1,&ch2);
	printf("a=%d,b=%d\n",a,b);
	printf("ch1=%c,ch2=%c\n",ch1,ch2);
	return 0;
} 

以上程序的运行结果如下:

在这里插入图片描述

(2)% 后的 * 附加说明符,用来表示跳过它相对应的数据。例如:

#include<stdio.h>
int main() {
	int a,b;
	scanf("%d %*d %d",&a,&b);
	printf("a=%d,b=%d\n",a,b);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

三、scanf 函数的使用要点

1、scanf 函数中格式控制字符串后面不是变量名,是变量地址,即:&变量名。但在使用 s 格式输入字符数组时,变量名本身就是字符串的首地址,不需要加地址运算符 &。例如:

#include<stdio.h>
int main() {
	int a;
	char str[6];
	scanf("%d",&a);
	scanf("%s",str); 
	printf("a:%d\n",a);
	printf("str:%s",str);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

2、scanf 函数没有计算功能,因此输入的数据只能是常量,不能是表达式。

3、输入数据时,数据与数据之间应使用分隔符。分隔符有两种,一种是在输入格式控制字符串中给定的。另一种是空格、Enter 键或制表符(Tab)。

例如:

#include<stdio.h>
int main() {
	int a,b,c,d,e,f,g,h;
	scanf("%d,%d",&a,&b); //输入时用逗号(,)分隔 
	scanf("%d%d",&c,&d);  //输入时用空格分隔
	scanf("%d%d",&e,&f);  //输入时用回车分隔
	scanf("%d%d",&g,&h);  //输入时用tab键分隔
	printf("a=%d,b=%d\n",a,b);
	printf("a=%d,b=%d\n",c,d);
	printf("a=%d,b=%d\n",e,f);
	printf("a=%d,b=%d\n",g,h);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

4、输入格式中,除了格式说明之外的普通字符需要原样输入。例如:

#include<stdio.h>
int main() {
	int x,y;
	scanf("x=%d,y=%d",&x,&y);
	printf("x=%d,y=%d\n",x,y);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

5、输入实型数据时,不允许指定精度。

6、输入数据时,如果遇到以下情况,则认为该数据输入结束。

(1)遇到空格、换行符或制表符(Tab)

(2)达到指定的宽度输入结束。例如:

#include<stdio.h>
int main() {
	int x;
	scanf("%2d",&x);
	printf("x=%d\n",x);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

(3)遇到非法字符输入结束。例如:

#include<stdio.h>
int main() {
	int x;
	char ch;
	float f1;
	scanf("%d%c%f",&x,&ch,&f1);
	printf("x=%d,ch=%c,f1=%f\n",x,ch,f1);
	return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

scanf()函数用法
hou09tian的博客
03-07 1万+
1 scanf()函数简介 scanf()函数的作用是从标准的输入流中读取数据,并将读取到的数据保存到指定的变量中。其格式为 int scanf( const char *format [, argument]... ); 其中,参数format指定了读取数据的方式;argument是一个参数列表,其类型是变量的地址,scanf()函数读取到的数据就保存到这些变量中。scanf()函数的返...
C语言趣味教程】(1) 深入浅出 HelloWorld:通过 HelloWorld 展开教学 | 头文件详解 | main 函数详解
有道无术, 术尚可求。有术无道, 止于术。
07-04 1万+
本章是首个章节,将通过计算机最经典的示例程序 Hello World 来展开我们的教程,考虑到 C 语言历史大家应该早已屡见不鲜,所以这里我们选择介绍 Hello World 的历史和由来。然后带着大家创建项目并敲下这最经典的代码。
[C语言]输入函数 scanf() 很详细!
PeachPrince的博客
06-25 2330
[C语言]输入输出函数 scanf() printf() scanf() 和printf()函数C语言中很常用的输入输出函数,虽然功能不同,但工作原理类似。两个函数都使用格式化字符串和参数列表。 本文介绍了scanf()函数的基本用法,常用的转换说明和修饰符,scanf()的返回值
C语言scanf用法大全
最新发布
2301_79814410的博客
09-02 379
scanf匹配特定字符的格式为:%[xxx],[ ]包围起来的是需要读取的字符集合。scanf() 允许把读取到的数据直接丢弃,不往变量中存放,abcd没有顺序要求,这四个字符什么顺序均可以被录入。具体方法就是在 % 后面加一个*同理可得%[0-9]等。
scanf中的%[^\n]%*c格式
轻锋的专栏
03-30 1万+
scanf  语法:    #include   int scanf( const char *format, ... );  类似函数有        int scanf(const char *format, ...);        int fscanf(FILE *stream, const char *format, ...);//指定输入流        int ssc
C语言scanf函数用法详解+总结(保姆级)
2401_86080061的博客
07-22 4876
上⾯⽰例中,格式字符串 %d%d%f%f ,表⽰⽤⼾输⼊的前两个是整数,后两个是浮点数,⽐如 1 -20 3.4 -4.03。上例中,第一次scanf()读取输入数据,%d会自动忽略起手空格,从-1开始读取,读取到 -13 停止,因为后面。• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会停⽌。%d 就是⼀个占位符, % 是占位符的标志, d 表⽰整数。⽤⼾输⼊数据、按下回⻋键后, scanf() 就会处理⽤⼾的输⼊,将其存⼊变量。
格式输入函数scanf
JiaoXin327的博客
07-14 1万+
格式输入函数 1.scanf函数的一般格式 Scanf函数是一个标准库函数,其函数原型在头文件stdio.h中,scanf函数的一般形式如下 Scanf(格式控制,地址表列); 其中,格式控制的作用与printf函数相同,但不能显示非格式字符串(普通字符),也就是不能显示提示字符串。地址表中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如:&a,&b分别表示...
scanf输入格式
u013431343的专栏
06-17 1677
注意上面的scanf("%d,%d,%d",&a,&b,&c);中%d,%d,%d之间有逗号,输入数据时就必须用逗号将各个数据隔开 &a,&b,&c中的&是地址运算符,&a指a在内存中的地址。scanf的作用是:按照a,b,c的内存地址将a,b,c的值存进去。变量a,b,c的地址是在编译连续阶段分配的。 这里注意:如果scanf中%d是连着写的如“%d%d%d”,在输入数据是,数据之间
C++语言基础——函数详解
qiuweichen1215的博客
03-30 1万+
函数全名叫计算机函数,它可以帮助你完成一些特定的程序。你可以把它简单理解成一把手枪。 手枪的作用:完成几发子弹进行射击的功能 手枪的结构:有固定的几个部分构成 所以,手枪是具有一定格式,可以完成一些特定功能的一件工具,这就是函数
谭浩强C语言程序设计详解
书中详细讲解了如何编写简单的C程序,并介绍了输入和输出函数,如`printf`和`scanf`,这是C语言中最基础的I/O操作。 对于初学者来说,理解并运用TurboC2.0集成开发环境至关重要。该书详尽地介绍了TurboC2.0的启动、...
详解三子棋教程——附源码
爱编程的晖哥的博客
01-06 1288
相信大家都玩过或者听说过三子棋这个游戏,那么这篇文章我就详细的讲解一下三子棋的实现,在这之前大家要掌握好基本的语法还有二维数组和函数的内容,不过都是简单的应用,我相信大家都可以很快就学会的,在这里是一个人机对战的小游戏 首先我给大家梳理一下整个过程的思路,因为很多朋友在刚开始时不知道怎么下手的。 游戏基本思路 1.菜单 站在玩家的角度,肯定要让玩家进行选择,然后我们可以先制作一个简易的菜单,来提示玩家进行选择,这个其实是很容易实现的 2.初始化一个棋盘 既然是下棋,那我们肯定要有一个棋盘,
C语言编程中scanf函数的详细用法
09-02
文档中详细解析了C语言scanf的详细用法,在程序设计中需要需要注意的地方,另外还列举了一些经典了错误使用scanf的例子。
scanf 函数 —— 基本的输入函数
热门推荐
Green_Gables的博客
07-15 2万+
一、概述 scanf 函数和 printf函数 一样,用途广泛,其功能用一句话概括就是 “ 通过键盘给程序中的变量赋值 ” 。 二、用法格式scanf 函数的两种用法,或者说两种格式如下: 1、scanf( " 输入控制符 " ,输入参数); /* ----- 英文输入输入 -----*/ 简单、常用用法 例如:scanf("%d", &i); /* &i 表示变量 i 的地址,&是取地址符...
scanf函数格式输入
紫竹blog
04-19 213
格式字符说明: %a,%A 读入一个浮点值(仅C99有效)  %c 读入一个字符   %d 读入十进制整数  %i 读入十进制,八进制,十六进制整数  %o 读入八进制整数  %x,%X 读入十六进制整数  %c 读入一个字符  %s 读入一个字符串,遇空格、制表符或换行符结束。  %f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。  %p 读入一个指针  %u ...
scanf函数使用方法详解
m0_72536629的博客
12-19 9356
scanf函数使用方法详解
scanf函数用法详解
小点宝
04-20 880
原文链接 1.函数基本说明: 函数名: scanf 功 能: 执行格式输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为: scanf("格式化字符串>",地址表>); sc
scanf()函数输入格式大全
janvinal的专栏
04-04 1万+
scanf函数 格式说明符: %c    字符型 %d    十进制数 %i     读入十进制,八进制,十六进制数。输入的时候正常是十进制数,若输入0前缀的数将读入八进制,0x前缀读入16进制。若输入09 则读入0,9进入缓冲区 %f     浮点数 %o    八进制数 %s    字符串,碰到空格或回车结束 %x    16进制数 %p 
scanf用法
zzg的学习博客
01-07 1万+
scanf的基本用法和拓展用法
printf/scanf格式控制符的完整格式
特权份子的专栏
08-12 2147
printf/scanf格式控制符的完整格式<br />printf的格式控制的完整格式:<br />%  -  0  m.n  l或h  格式字符<br />下面对组成格式说明的各项加以说明:<br />①%:表示格式说明的起始符号,不可缺少。<br />②-:有-表示左对齐输出,如省略表示右对齐输出。<br />③0:有0表示指定空位填0,如省略表示指定空位不填。<br />④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=
C语言scanf和printf函数详解数据输入输出格式
总结来说,C语言中的scanf()和printf()函数是处理数据输入和输出的关键工具,熟练掌握它们的用法格式化选项,可以帮助开发者高效地管理程序中的数据流,提高程序的灵活性和可维护性。此外,理解如何在不同输出环境...
写文章

热门文章

  • MySQL建表(create table)命令详解 71701
  • MySQL登录命令详解 24806
  • C 程序设计教程(10)—— 数据输入函数(scanf)用法详解 22061
  • MySQL视图(view)基本用法 16313
  • MySQL主从复制(3)——Change Master参数详解 14952

分类专栏

  • MySQL基本操作 180篇
  • ORACLE RAC 集群的管理与维护 18篇
  • Oracle基本操作 76篇
  • Oracle体系结构 93篇
  • Python 程序设计入门 25篇
  • Oracle Dataguard 配置教程 3篇
  • 非图形方式静默安装与管理 Oracle 11g RAC 35篇
  • CentOS7安装Oracle11g 5篇
  • C 程序设计教程 20篇
  • 指针类型 1篇
  • Linux操作系统 23篇
  • 数据库系统原理与应用教程:以MySQL为例 83篇
  • MySQL讲义 57篇
  • oracle数据库迁移 5篇
  • Oracle Alter Database 命令详解
  • Oracle Alter Tablespace 命令详解
  • Oracle Alter System 命令详解
  • MySQL数据备份与恢复 18篇
  • MySQL使用心得 5篇
  • MySQL高级应用 29篇
  • MySQL数据库安装配置 7篇
  • MyCat 4篇

最新评论

  • MySQL 实验 11:数据查询(4)—— 连接查询与子查询

    herosunly: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

  • MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置

    妙极矣: 非常喜欢大佬的文章,因为每一篇文章都融入了大佬的思想和经验,在阅读过程中我总有一种亲近感和信任感。大佬不仅是一位优秀的技术高手,更是一位富有思想深度和人格魅力的博主。非常喜欢大佬的文章,因为每一篇文章都融入了大佬的思想和经验,在阅读过程中我总有一种亲近感和信任感。大佬不仅是一位优秀的技术高手,更是一位富有思想深度和人格魅力的博主。

  • MySQL 实验 9:数据查询(2)—— 条件查询

    herosunly: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

  • MySQL 实验 7:索引的操作

    herosunly: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

  • MySQL 实验 5:表数据的增、删、改操作

    herosunly: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

最新文章

  • MySQL 实验 11:数据查询(4)—— 连接查询与子查询
  • MySQL 实验 10:数据查询(3)—— 聚合函数与分组查询
  • MySQL 实验 9:数据查询(2)—— 条件查询
2024年17篇
2023年50篇
2022年129篇
2021年78篇
2020年161篇
2019年42篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睿思达DBA_WGX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家青岛玻璃钢商场美陈椅宁夏人物玻璃钢雕塑设计静安区正宗玻璃钢雕塑择优推荐阜阳订制玻璃钢雕塑玻璃钢人物雕塑批发商场美陈大赛投票长沙不锈钢仿古玻璃钢仿铜雕塑三明手糊法玻璃钢雕塑四川玻璃钢雕塑哪家好天津商场美陈如何打造商场吸引力玻璃钢雕塑怎么算价格的抚州佛像玻璃钢雕塑上饶个性化玻璃钢雕塑联系方式品牌玻璃钢雕塑厂家现货中山玻璃钢卡通雕塑订制厂家卡通雕塑光头强玻璃钢雕塑组合登封玻璃钢雕塑费用防城港玻璃钢白鹭雕塑广东玻璃钢花盆定制商场美陈鲜花的作用固始玻璃钢雕塑定制河南仿古玻璃钢卡通雕塑定做价格南通仿石材玻璃钢花盆江西玻璃钢雕塑采购嘉兴人物玻璃钢雕塑制作滁州玻璃钢卡通雕塑厂家北京大型商场美陈供应水泥直塑和玻璃钢雕塑玻璃钢雕塑和不锈钢雕塑价格玻璃钢雕塑验收标准香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化