您所在位置: 网站首页 / C语言scanf函数应用问题.doc / 文档详情
C语言scanf函数应用问题.doc 立即下载
2024-09-09
约4千字
约6页
0
24KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

C语言scanf函数应用问题.doc

C语言scanf函数应用问题.doc

预览

免费试读已结束,剩余 1 页请下载文档后查看

5 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开


第PAGE\*MERGEFORMAT6页共NUMPAGES\*MERGEFORMAT6页

免责声明:图文来源网络征集,版权归原作者所有。若侵犯了您的合法权益,请作者持权属证明与本站联系,我们将及时更正、删除!谢谢!
		C语言scanf函数应用问题
C语言的输入是由系统提供的库函数完成的。scanf函数是C语言中最常用且功能最强的输入函数,但该函数如使用不慎,就会出现错误或得不到预想的结果。以下结果都是基于VC++6.0运行环境。
一、格式说明符和输入项的三对应(类型、个数、顺序)scanf函数格式中的格式说明(“%格式字符”)应与输入项数据类型一致,个数相等、顺序对应(除格式说明中出现“*”附加格式说明字符外)。示例一:inta,b;scanf(“%d%d%d”,&a,&b);printf(“%d,%d”,a,b);输入“345”时,输出“3,4”,没有错误提示信息,但是第三个数没有接收的变量,也就没有输出。再如inta,b;scanf(“%d”,&a,&b);printf(“%d,%d”,a,b);输入“34”时,输出“3,-858993460”,a得到3,但b是一个随机数,都是因为格式说明(“%格式字符”)与输入项个数不一致造成的。再如structst{intnum;charname[10];intage;floatscore;}student;scanf(“%d,%s,%d,%f”,&student);输入“10001,”zhang”,23,68”,运行程序时,无出错信息,但student不能正确接收输入数据。
应该写成:scanf(“%d,%s,%d,%f”,&student.num,student.name,&student.age,&stu-dent.score);保证格式说明与输入项个数相等、一一对应,才能使student正确接收输入数据。示例二:chara,b;scanf(“%d%d”,&a,&b);printf(“%d,%d”,a,b);输入“34”时,输出“3,4”,输入整型数据,是字符型数据接收,但是结果正确,因为字符型数据在内存中的存放形式是整型数据。再如floata,b;scanf(“%d%d”,&a,&b);printf(“%d,%d”,a,b);输入“34”时,输出“0,918028288”,即a和b的结果都是随机数,这就是输入格式和接收的数据类型不一样造成的。又如:inta,b;scanf(“%f%f”,&a,&b);printf(“%d,%d”,a,b);输入“1.23.4”时,输出“1067030938,1079613850”,即a和b的结果都是随机数,这也是输入格式和接收的数据类型不一样造成的。
二、非格式说明符的输入非格式说明符要求用户原样照写输入,既不能更改,又不能漏写。示例一:inta,b;scanf(“a=%d,b=%d”,&a,&b);printf(“%d,%d”,a,b);输入“12”(即1、2间用空格隔开),输出“-858993460,-858993460”,无错误提示,但结果与输入数据不一致,输出a、b的值是随机数。这就是因为scanf函数中设定的格式(“a=%d,b=%d”)(其中a=,b=均为普通字符)与输入数据的格式(1、2间用空格间隔)不一致造成的,正确的输入形式应为“a=1,b=2”(“,”也绝不能漏掉)。所以,为了保证正确输入数据,输入数据前首先看好程序中scanf函数设定的格式,再按照设定的格式正确输入数据。示例二:scanf(“%d,%d”,&a,&b);输入时应用以下形式:3,4↙注意3后面应是逗号,它与scanf函数中的“格式控制”中的逗号对应。如果输入时不用逗号而用空格或其他字符是不对的。3□4↙(不对)3:4↙(不对)如果是scanf(“%d□□%d”,&a,&b);则输入时两个数据间应空两个或更多个空格字符。如:3□□4↙或3□□□□4↙
三、附加格式说明符的说明示例一:inta,b;scanf(“%2d%2d”,&a,&b);printf(“%d,%d”,a,b);输入“1234”,输出“12,34”输入“123”,输出“12,3”输入“123456”,输出“12,34”因为格式中“d”格式字符表示输入整型数据,“2”附加格式说明字符表示输入数据所占宽度为2,因此,无论用户输入什么,系统都将自动截取两位赋给a,再截取两位赋给b。也就是说可以用附加格式说明符指定输入数据所占列数,系统将自动按它截取所需数据。
再如scanf(“%3c”,&ch);如果从键盘上连续输入3个字符abc,由于ch只能容纳一个字符,系统就把第一个字符‘a’赋给ch。示例二:floata;scanf(“%5.1f”,&a);输入“1234”,无错误提示,但
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

C语言scanf函数应用问题

文档大小:24KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用