首页- 聚焦 > 详情

c语言scanf具体代码 C语言学习scanf的用法

2023-09-09 08:04:21来源:

hello大家好,我是城乡经济网小晟来为大家解答以上问题,c语言scanf具体代码,C语言学习scanf的用法很多人还不知道,现在让我们一起来看看吧!

程序是人机交互的媒介,有输出必然也有输入,我们开始讲解如何从键盘输入数据。在C语言中,有多个函数可以从键盘获得用户输入:


(资料图片仅供参考)

scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。

getchar()、getche()、getch():这三个函数都用于输入单个字符。

gets():获取一行数据,并作为字符串处理。

scanf() 是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,大家都要有所了解。

scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。

举例:

#include

int main()

{

int x=0;

printf("1 1=?\n");

scanf("%d",&x); //格式:scanf("格式控制字符串",&地址列表);

if(x!=2)

对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。

其实 scanf 和 printf 非常相似,只是功能相反罢了:

scanf("%d %d", &a, &b); // 获取用户输入的两个整数,分别赋值给变量 a 和 b

printf("%d %d", a, b); // 将变量 a 和 b 的值在显示器上输出

它们都有格式控制字符串,都有变量列表。不同的是,scanf 的变量前要带一个&符号。

&称为取地址符号,也就是获取变量在内存中的地址。

数据是以二进制的形式保存在内存中的,字节(Byte)是最小的可操作单位。

为了便于管理,我们给每个字节分配了一个编号,使用该字节时,只要知道编号就可以,

就像每个学生都有学号,老师会随机抽取学号来让学生回答问题。字节的编号是有顺序的,从 0 开始,接下来是 1、2、3……

下图是 4G 内存中每个字节的编号(以十六进制表示):

这个编号,就叫做地址(Address)。

int a;会在内存中分配四个字节的空间,我们将第一个字节的地址称为变量 a 的地址,也就是&a

的值。对于整数、浮点数、字符,都要使用 & 获取它们的地址,scanf 会根据地址把读取到的数据写入内存。

#include

int main()

{

int a, b, c;

scanf("%d %d", &a, &b);

printf("a b=%d\n", a b);

scanf("%d %d", &a, &b);

printf("a b=%d\n", a b);

scanf("%d, %d, %d", &a, &b, &c);

printf("a b c=%d\n", a b c);

scanf("%d is bigger than %d", &a, &b);

printf("a-b=%d\n", a-b);

return 0;

}

第一个 scanf() 的格式控制字符串为"%d %d",中间有一个空格,而我们却输入了10 20,中间有多个空格。

第二个 scanf() 的格式控制字符串为"%d %d",中间有多个空格,而我们却输入了100 200,中间只有一个空格。这说明 scanf() 对输入数据之间的空格的处理比较宽松,并不要求空格数严格对应,多几个少几个无所谓,只要有空格就行。

第三个 scanf() 的控制字符串为"%d, %d, %d",中间以逗号分隔,所以输入的整数也要以逗号分隔。

第四个 scanf() 要求整数之间以is bigger than分隔。

用户每次按下回车键,程序就会认为完成了一次输入操作,scanf() 开始读取用户输入的内容,并根据格式控制字符串从中提取有效数据,只要用户输入的内容和格式控制字符串匹配,就能够正确提取。

本质上讲,用户输入的内容都是字符串,scanf() 完成的是从字符串中提取有效数据的过程。

最后需要注意的一点是,scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

‍这个例子你搞懂了,简单的scanf用法就没问题了,所以认真看完思考。

格式控制符 说明

%c读取一个单一的字符

%hd、%d、%ld读取一个十进制整数,并分别赋值给 short、int、long 类型

%ho、%o、%lo读取一个八进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型

%hx、%x、%lx读取一个十六进制整数(可带前缀也可不带),并分别赋值给 short、int、long 类型

%hu、%u、%lu读取一个无符号整数,并分别赋值给 unsigned short、unsigned int、unsigned long 类型

%f、%lf读取一个十进制形式的小数,并分别赋值给 float、double 类型

%e、%le读取一个指数形式的小数,并分别赋值给 float、double 类型

%g、%lg既可以读取一个十进制形式的小数,也可以读取一个指数形式的小数,并分别赋值给 float、double 类型

%s读取一个字符串(以空白符为结束)

这就是scanf的基本用法了,如果不明白的就多看几遍,最好上机自己敲一敲,改一改,怕忘记,就收藏起来以后再看。

还有scanf的用法进阶的后面会写。欢迎订阅点赞,谢谢!

本文就为大家讲解到这里,希望对大家有所帮助。

标签:

上一篇:「多彩新论」向辛勤的园丁致敬
下一篇:最后一页