c语言scanf的用法(初学者的理解qwq)

c语言scanf的理解

在最开始学习了printf函数,可以打印一些字符到屏幕上,但是那个值是之前已经赋值的死值但是有些时候需要的并非是死值而是活值
就例如:

#include <stdio.h>
int main()
{
 int a=10;
 printf("%d",a);
 return 0;
 }

这个代码就是只能输出一个死值:a=10,想换一个数字就得更改a的赋值,而scanf则是可以实现输入活值,从而实现人机交互。也就是自己想要什么输入什么就行了。
scanf的基本表达式是:scanf(“格式控制符”,地址表列);
就例如:

#include <stdio.h>
int main()
{
 int a ;
 scanf("%d",&a);//输入一个数字
 printf("%d",a);//打印对应数字
 return 0;
 }

上边的例子就是一个简单的包含scanf的程序,键盘上输入数字,可以打印对应数字,其中易错的点是&也就是取址符,刚开始写的时候容易忘记,容易和printf弄混,可以说刚学的时候是经常忘写(ノへ ̄、),(悄咪咪的摸一把泪)&是取址控制符,&加上变量名,就比如&a,就变成了变量a的地址。%d、%c之类就是转换说明,%d是十进制整数,%c是字符。其中%d只读取十进制整数,不读取空格回车和tap键,scanf每读取一个字符,会跳过所有的空白字符,也就是空格回车和tap键,直到遇见一个非空白字符才开始读取。就比如上边的程序
在这里插入图片描述
前边输入的空格回车和tap键仅仅是改变了光标位置,但是却未被读入,只有输入十进制整数的时候才会被读入,然后输出对应数字。如果是需要多个输入的值,那么最好%d之间用空格隔开
就例如:

#include<studio.h>
int main()
{
	int a,b;
	scanf("%d				%d", &a,&b);//输入数字
	printf("%d %d", a,b);//打印对应数字
	return 0;
}

中间隔一个就行,当然相隔多一些也行,键盘输入的时候只需一个空格隔开就行
在这里插入图片描述

上边的图片就是结果。但是如果%d之间相隔的是其他的符号,就需要输入对应符号才能输入另一个值

int main()
{
	int a,b;
	scanf("%d <+ ))><< %d", &a,&b);//输入数字
	printf("%d %d", a,b);//打印对应数字
	return 0;
}

在两个%d之间输入一个小鱼<+ ))><<然后键盘输入的时候就得输入对应的小鱼<+ ))><<总之很麻烦,不建议加上其他符号,空格比较方便,而且可读性高。这些符号的专业名词是非输入控制符,就比如逗号,输入的时候还要判断输入法是英文还是中文,纯粹是给自己找麻烦。除非是喜欢某些符号qwq
然而对于%c则与上边的情况不同,%c会读取每一个字符,其中就包括空格,在计算机储存中,数字123会以ASCII码的形式储存变成’1’ ‘2’ '3’键盘输入的都会转化成ASCII码,之后储存在计算机中,而char是字符型,因此%c会读取所有的字符,输入什么读取什么。
就例如下边的程序

int main()
{
	char a ;
	char b;
	scanf("%c%c", &a,&b);
	printf("%c%c", a,b);

	return 0;
}

如果键盘上输入空格和一个数字或字母输出为
在这里插入图片描述
在这里插入图片描述

这就说明了空格可以被读取。
会以上的内容一般的scanf问题都可以解决了。
有关指针和数组的应用以后会更新的
注:在vs2022中scanf被认为不安全,有两种解决方案,一种是换成scanf_s,另一种则是在程序最前边加上#define _CRT_SECURE_NO_WARNINGS也就是无视危险强制执行。(还有就是每次新建项目的时候第一行会自动生成#define _CRT_SECURE_NO_WARNINGS,感兴趣可以去搜一搜)
在这里插入图片描述
一定要在文件最前边
本文的部分定义是引用《c语言程序设计》(谭浩强)和《C primer plus》以及一些老师讲过的观点,再加上自己浅薄的看法,希望勿喷qwq

最后的声明:本人是初学者,某些的地方可能写的不太严谨(以后会逐渐补充修改的),希望大佬指正^_~。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lin_or_lin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值