C语言程序设计案例式教程(第2版)
上QQ阅读APP看书,第一时间看更新

2.scanf()函数

scanf()函数用于读取用户从键盘输入的数据,它可以灵活接收各种类型的数据,例如字符串、字符、整数、浮点数等。scanf()函数也可以通过格式控制字符控制输入的内容,但只使用类型格式控制字符(如“%d”“%c”“%f ”等),并不使用宽度、精度、标志等格式控制字符。scanf()函数的类型格式控制字符的用法与printf()函数一样。

scanf()函数用法的示例代码如下。

int a;
char c;
float f;
scanf("%d", &a);      //接收一个从键盘输入的整型数据
scanf("%c", &c);      //接收一个从键盘输入的字符型数据
scanf("%f", &f);      //接收一个从键盘输入的浮点型数据

在调用scanf()函数时,参数变量的前面有一个“&”符号。这是取地址运算符,用于获取已定义变量的存储地址,将从键盘输入的数据存储到相应变量中。该符号将在第5章讲解。

在使用scanf()函数获取用户输入的数据时,如果输入的数据中包含终止符,scanf()函数就认为输入结束。例如,使用scanf()函数输入一个字符串,并将其存储到数组中,示例代码如下。

char arr[20];         //定义字符数组arr,大小为20
scanf("%s", &arr);    //获取输入的字符串,并将其存储到数组arr中

执行上述代码,获取输入的字符串时,如果输入“Hello world”,程序只会读取到“Hello”,后面的“world”不会被读取。这是因为“Hello world”中包含一个空格,空格是终止符,scanf()只能读取到空格之前的内容。

C语言中常见的终止符如表2-3所示。

表2-3 C语言中常见的终止符

后面的章节中会经常调用scanf()函数获取从键盘输入的数据,读者可慢慢熟练掌握scanf()函数的使用方法。在这里,读者了解scanf()的调用方法即可。

小提示

在使用Visual Studio 2019调用scanf()函数时,因为scanf()函数是一个不安全的函数,Visual Studio 2019对其检查比较严格,所以编译可能不会通过,会提示scanf()函数不安全,此时需要关闭安全检查。要关闭安全检查,需要在源代码文件最顶部添加“#define _CRT_SECURE_NO_WARNINGS”。需要注意的是,必须在文件最顶部添加,添加在其他地方无效。

C11标准使用scanf_s()函数代替scanf()函数。scanf_s()函数是一个安全函数,但它是C11标准新增加的函数,目前还有很多编译器不支持。本书为了提高代码的可移植性,仍使用scanf()函数获取从键盘输入的数据。