C 库 - scanf() 函数



C 库函数 scanf(const char *format, ...) 从标准输入流(通常是键盘)读取格式化输入。

语法

以下是 C 库函数 scanf() 的语法:

int scanf(const char *format, ...);

参数

此函数接受两个参数:

  • format: 这是一个包含格式字符串的 C 字符串。格式字符串指定预期输入的类型,并由以 % 字符开头的转换说明组成。
  • ... :这些是与格式说明符相对应的附加参数。每个参数必须是指向一个变量的指针,已解析的输入将存储在该变量中。
序号 参数及说明
1

*

这是一个可选的起始星号,表示数据要从流中读取但被忽略,即它不会存储在相应的参数中。

2

宽度

这指定了当前读取操作中要读取的最大字符数。

3

修饰符

指定与相应附加参数指向的数据不同的 int(在 d、i 和 n 的情况下)、unsigned int(在 o、u 和 x 的情况下)或 float(在 e、f 和 g 的情况下)大小:h : short int(对于 d、i 和 n),或 unsigned short int(对于 o、u 和 x)l : long int(对于 d、i 和 n),或 unsigned long int(对于 o、u 和 x),或 double(对于 e、f 和 g)L : long double(对于 e、f 和 g)

4

类型

指定要读取的数据类型以及预期读取方式的字符。请参阅下表。

类型 限定输入 参数类型
c 单个字符:读取下一个字符。如果指定了与 1 不同的宽度,则该函数读取宽度个字符并将它们存储在作为参数传递的数组的连续位置中。末尾不附加空字符。 char *
d 十进制整数:前面可选地带有一个 + 或 - 符号的数字 int *
e、E、f、g、G 浮点数:包含小数点的十进制数,前面可选地带有一个 + 或 - 符号,后面可选地带有一个 e 或 E 字符和一个十进制数。两个有效条目的示例是 -732.103 和 7.12e4 float *
o 八进制整数 int *
s 字符字符串。这将读取后续字符,直到找到空格(空格字符被认为是空格、换行符和制表符)。 char *
u 无符号十进制整数。 unsigned int *
x、X 十六进制整数 int *

返回值

scanf 函数返回一个整数值,该值指示成功匹配并赋值的输入项数。如果输入与格式说明符不匹配,或者在进行任何匹配之前到达输入流的末尾,则 scanf 返回 EOF。

格式说明符

一些常见的格式说明符包括

  • %d 用于整数
  • %f 用于浮点数
  • %c 用于字符
  • %s 用于字符串

示例 1:读取整数

在这里,我们提示用户输入一个整数,使用 scanf 读取输入,然后在成功读取整数时打印该整数。

以下是 C 库函数 scanf() 的示例。

#include <stdio.h>

int main() {
   int num;
   printf("Enter an integer: ");
   int result = scanf("%d", &num);

   if (result == 1) {
       printf("You entered: %d\n", num);
   } else {
       printf("Failed to read an integer.\n");
   }

   return 0;
}

输出

以上代码产生以下结果:

Enter an integer: 23
You entered: 23

示例 2:读取多个值

此示例从用户读取一个整数、一个浮点数和一个字符,并在成功读取所有三个值时打印它们。

#include <stdio.h>

int main() {
   int age;
   float height;
   char initial;
   printf("Enter your age, height (in meters), and first initial: ");
   int result = scanf("%d %f %c", &age, &height, &initial);

   if (result == 3) {
       printf("You entered: Age = %d, Height = %.2f, Initial = %c\n", age, height, initial);
   } else {
       printf("Failed to read all values.\n");
   }

   return 0;
}

输出

执行上述代码后,我们将得到以下结果:

Enter your age, height (in meters), and first initial: 26 180 R
You entered: Age = 26, Height = 180.00, Initial = R
广告