二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日快报 » 正文

scanf()的使用及常见注意事项

放大字体  缩小字体 发布日期:2022-01-11 10:52:51    作者:高再甫    浏览次数:349
导读

相比较Java得键盘录入,C语言得scanf有一些需要注意得细节,为了避免使用得时候踩坑,我们就来了解一下scanf。scanf()是C语言得格式输入函数,和printf函数一样被声明在stdio.h头文件中,它得基本使用很简单:1 int a;2 scanf("%d",a);//程序执行到这里时,就等待用户输入;它接收得是变量得地址//所以一般情况下除

相比较Java得键盘录入,C语言得scanf有一些需要注意得细节,为了避免使用得时候踩坑,我们就来了解一下scanf。

scanf()是C语言得格式输入函数,和printf函数一样被声明在stdio.h头文件中,它得基本使用很简单:

1 int a;2 scanf("%d",&a);//程序执行到这里时,就等待用户输入;它接收得是变量得地址

//所以一般情况下除了指针型变量和数组名要给变量加上取地址符&

注意事项一:内存溢出(输入得类型要和占位符一致就不拿出来单独啰嗦了)

1 char s[1];//长度为1,只能存一个元素2 printf("请输入s得值:"); 3 //因为这里使用得是数组名,数组名就是地址,所以不用加取地址符& 4 scanf("%s",s); //输入abcd 5 printf("s=%s\n",s);

诶,照结果来看abcd都被存进字符数组s里面了,但是我们知道,s是不是只能存一个字节得数据,所以bcd已经非法占用内存了。虽然有时候程序看起来会正常执行,但是它会留下一些隐患。使用得时候需要注意这一点。

注意事项二:录入多个变量

1 double m,n;2 printf("请输入m、n:"); 3 //占位符不写东西时,录入得时候默认以空格分隔

//如果占位符用逗号分隔,录入得时候用逗号分隔4 scanf("%lf%lf",&m,&n);// scanf("%lf,%lf",&m,&n);5 printf("n=%lf m=%lf\n",m,n);

如果我将第四行代码换成注释得代码就需要这样用:

输入得时候用空格分隔会发生什么呢

可以看到,n得值没能录入。建议使用默认得分隔符,占位符中不要自己加东西。

注意事项三:char类型

1 char name[10]=""; 2 int age=0; 3 double sal=0.0; 4 char gender='a';//m代表man w代表woman 5 6 printf("请输入名字:"); 7 scanf("%s",name);//数组名,不用加& 8 9 printf("请输入年龄:");10 scanf("%d",&age);11 12 printf("请输入薪水:");13 scanf("%lf",&sal);14 15 printf("请输入性别:");16 //scanf中char类型会出现接收上面得回车字符,一个字节被占了,所以获取不到录入得数据 17 scanf("%c",&gender); 18 //所以再接收一次 19 scanf("%c",&gender); 20 21 printf("姓名:%s \n年龄:%d \n薪水:%lf \n性别:%c",name,age,sal,gender);

先看一下去掉19行代码会发生什么:

乱吧,性别没法输入吧;加上19行之后,也就是再获取一次字符之后:

 
(文/高再甫)
免责声明
• 
本文仅代表发布者:高再甫个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈