scanf的一些用法

scanf的使用

运行环境:VS2007
存在错误提示:C4996,原因是scanf存在内存泄漏的风险
在这里插入图片描述
措施进行预处理声明 #define _CRT_SECURE_NO_WARNINGS
如果想永远避免可以按下图操作
在这里插入图片描述

scanf的作用
将键盘输入的内容传递到对应的变量容器内(变量指向的地址)
因此scanf提供了基本类型的输入方式,且其读取方式由%d、%f、%lf、%c、%s决定,不同的符号会产生不同的效果。

1. 整型(四字节)

键盘输入是文本型输入,因此你可以随意输入,scanf碰到第一个非‘0-9’与空格的字符(空格不能出现在数据中)便退出读取。当输入的值的绝对值过大时会转换为无符号整型对4294967296进行求余后换算成相应的正负值

int a;
scanf("%d", &a);//&a对a获取地址进行存储
printf("%d", a);

2.单精度浮点型
键盘输入是文本型输入,因此你可以随意输入,scanf碰到第一个任意字符的便退出读取。小数点后面的零也会再指定位数截断。

float a;
	scanf("%f", &a);
	printf("%f", a);//获取a的存储地址

3.字符型
键盘输入是文本型输入,因此你可以随意输入,scanf碰到第一个任意字符便退出读取。

char a;
	scanf("%c", &a);
	printf("%c", a);//获取a的存储地址

当转换说明(%d、%c…)与后面的存储变量类型不对应时

大概率会出错,因为scanf是先将键盘输入的文本型数据根据转换说明转换为对应的数据类型,再去访问地址进行覆盖。这时候常常会出现地址错误。

关于scanf的一些特殊用法

设定输入中止符

char str[100];
scanf("%[^c]",str);//当输入'c'时中止输入
char str[100];
scanf("%[^0-9]",str);//当输入0-9任意一个字符时中止输入
char str[100];
scanf("%[0-9a-zA-Z]",str);//以特殊字符(非[]内字符)为中止输入符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值