C 语言中的 printf() 和 scanf()

12 2025 年 9 月 | 阅读 6 分钟

C 编程语言提供了许多用于输入和输出的函数。最基本的输入和输出函数是 printf() 和 scanf()。这两个函数是 C 语言标准输入/输出库函数的一部分,它们在 stdio.h (头文件) 中声明。printf() 函数用于显示输出。另一方面,scanf() 函数用于从用户那里获取输入。

Printf() 函数

在 C 编程语言中,printf() 函数用于显示输出。它将给定的语句打印到控制台。它是 C 中最常用的函数之一。它可以接受任意数量的参数。printf() 函数可以将文本、数字和变量打印到标准输出。

语法

printf() 函数的语法如下

在这个语法中,

  • 格式字符串:用于定义输出结构并包含多个格式说明符,例如 %d (整数)、%c (字符)、%s (字符串)、%f (浮点数) 等。
  • 参数列表:用于传递将替换格式说明符的参数 (变量的值)。

C 语言中的 Printf() 函数示例

让我们以一个示例来说明 C 语言中的 printf() 函数。

示例

编译并运行

输出

Name: Michael Bravo
Age: 24
Grade: A
Pi (2 decimals): 3.14

说明

在此示例中,我们使用了 4 种不同的数据类型及其值:整数、浮点数、字符和字符串。之后,我们使用 printf() 函数以格式化的方式显示不同数据类型的值。

关于 printf() 函数的重要注意事项

在 C 编程语言中,关于 printf() 函数有几个重要的注意事项,如下所示

  • printf() 函数在 stdio.h 头文件中声明。它用于在控制台显示输出。
  • 它也用于在输出字符串中打印不同类型的数据格式。
  • 我们需要在 printf() 语句中使用 "\n" 格式说明符,以便在控制台打印新的一行。

C 语言中的格式说明符

在 C 编程语言中,格式说明符是一个在格式化输入输出函数中使用的字符串。C 语言中有几种格式说明符。一些流行的格式说明符如下

格式说明符含义结果
%d用于打印整数值。10
%f用于打印浮点数值。3.141593
%.2f用于打印带有 2 位小数的浮点数。3.14
%c用于打印字符值。A
%s用于打印字符串。Hello
%u用于打印无符号整数值。25
%x用于打印十六进制值。1a
%o用于打印八进制值。12

Scanf() 函数

在 C 编程语言中,scanf() 函数用于从用户那里获取输入。它从控制台读取输入数据。它可以读取不同类型的数据,如数字、浮点数、字符串、字符等。scanf() 函数接受格式字符串和变量地址 (使用 ampersand (&)),输入数据将存储在 C 中。

语法

它具有以下语法:

在这个语法中,

  • 格式字符串:用于定义输入类型并包含多个格式说明符,例如 %d (整数)、%c (字符)、%s (字符串)、%f (浮点数) 等。
  • 参数列表:用于提供变量的地址 (通过使用 &) 来存储输入值。

C 语言中的 Scanf() 函数示例

让我们以一个示例来说明 C 语言中的 Scanf() 函数。在此示例中,我们将从用户那里获取输入并打印给定数字的立方。

示例

编译并运行

输出

Enter a number:15
Cube of a number is:3375

说明

在此示例中,我们可以得出结论:`scanf("%d", &num)` 语句从控制台读取一个整数,并将给定值存储在 `number` 变量中。之后,`printf("cube of number is: %d ", num*num*num)` 语句在控制台打印该数字的立方。

使用 printf() 和 scanf() 函数打印 C 语言中两个数字之和的 C 程序

让我们以 C 语言中输入输出的简单示例来说明,该示例将打印两个数字的总和。

示例

编译并运行

输出

Enter first number: 15
Enter second number: 20
sum of 2 numbers: 35

说明

在此示例中,我们使用 printf() 和 scanf() 函数计算两个数字的总和。在这里,我们有三个整数变量:x、y 和 result。之后,scanf() 函数获取 x 和 y 的输入,计算它们的总和,并使用 printf() 函数显示输出。

C 语言中交换两个数字的程序

让我们以一个示例来说明如何在 C 语言中交换两个数字。

示例

编译并运行

输出

Enter two numbers: 10
21
After swapping: a = 21, b = 10

说明

在此示例中,我们有两个整数,它们使用 scanf() 函数从用户那里获取输入值,然后使用临时变量交换它们的值。之后,我们使用 printf() 函数显示交换后的值。

结论

总之,printf() 函数用于在控制台显示输出。另一方面,scanf() 函数用于从用户那里获取输入。这些函数构成了 C 语言中输入/输出操作的基础。通过使用格式说明符,这些函数可以处理不同的数据类型,如整数、浮点数、字符和字符串,这使得它们对于创建交互式程序至关重要。

常见问题

1) 如何在 C 语言中控制浮点数输出的小数位数?

如果我们想控制浮点数输出的小数位数,可以使用 "%.nf",其中 n 是小数位数。

例如,`printf("%.2f\n", 3.14159);`

它将输出 3.14。

2) 如果格式说明符与变量类型不匹配,在 C 语言中会发生什么?

如果格式说明符与变量类型不匹配,将导致未定义的行为,并打印乱码或导致程序崩溃。

3) 在 C 语言的 'scanf' 函数中,ampersand (&) 的重要性是什么?

没有 `scanf()` 函数,我们就无法获得需要存储输入值的变量地址。因此,'scanf' 提供了需要存储输入值的变量地址。

4) 如何避免在 C 语言中读取字符串时发生缓冲区溢出?

在 C 编程语言中,我们可以在格式说明符中指定最大字段宽度,以避免在读取字符串时发生缓冲区溢出。

例如

它将读取最多 9 个字符加上一个空终止符。

5) 如果输入与格式说明符不匹配,在 C 语言中会发生什么?

如果输入与格式说明符不匹配,'scanf' 函数将停止读取,并返回成功匹配的输入数量,这可能少于预期。