C 语言格式化和非格式化输入输出

2024年8月28日 | 阅读 4 分钟

计算机编程需要输入/输出 (I/O) 操作。通过 I/O 操作,数据可以从各种来源读取,也可以写入到各种来源,包括文件键盘屏幕。在 C 语言中,I/O 操作可以是格式化的,也可以是非格式化的。在这篇博文中,我们将涵盖 C 语言中格式化 I/O 和非格式化 I/O 之间的区别,以及代码示例和输出。

C 语言中的格式化 I/O

I/O 过程被称为“格式化 I/O”。它允许您以特定格式读取或写入数据。Printf()scanf() 是处理格式化 I/O 的 C 例程的两个示例。要读取或写入的数据的类型和格式由格式字符串指定,这些操作使用格式字符串。程序执行会将格式字符串中找到的数据占位符替换为实际数据。

语法

printf() 函数的格式化输出语法

在这里,参数列表包括要打印的变量,格式字符串决定了输出格式。

scanf() 函数的格式化输入语法

在这里,参数列表包括将接收输入的变量,格式字符串描述了输入的格式。

示例

让我们看一个 C 语言中格式化 I/O 的示例

输出

Enter your name: Avi
Enter your age: 22
Your name is Avi and your age is 22

说明

在上面的示例中,我们首先声明变量 nameage。之后,使用printf() 函数提示用户输入他们的姓名年龄。我们使用scanf() 函数读取用户输入并将其分配给相应的变量。为了格式化输入,我们最后再次使用printf() 函数。

C 语言中的非格式化 I/O

非格式化 I/O 指一类I/O 操作,它将数据作为字节读取写入,而不考虑任何格式。C 语言中的非格式化 I/O 是通过 fread()fwrite() 等函数实现的。这些操作在不进行格式化的情况下,用于直接从文件读取数据和向文件写入数据。

语法

使用 fwrite() 函数打印非格式化数据的语法

在这里,count 是要写入的元素数量,size 是要写入的每个元素的大小,而文件指针是指向要写入数据的文件的指针。

使用非格式化输入进行fread() 方法语法

fread(data, size, count, file pointer);

在此语法中,是数据将被读取的缓冲区的一个指针,要读取的每个元素的大小,要读取的元素数量,以及一个从中读取数据的文件的指针

示例

让我们看一个 C 语言中非格式化 I/O 的示例

输出

This is an example of unformatted output.

说明

在此示例中,我们首先声明一个文件指针 (fp) 和一个字符数组 (data)。之后,使用'fopen()' 方法以写入模式打开'file.txt' 文件,然后将文件指针分配给'fp'。使用'fputs()' 函数将字符串"This is an example of unformatted output." 写入文件。然后使用'fseek()' 函数将文件指针移到文件开头。之后,使用'fread()' 函数从文件读取数据到'data' 缓冲区,然后使用'printf()' 函数显示数据。

格式化和非格式化 I/O 的区别

在 C 语言中,格式化非格式化 I/O 之间存在一些区别。其中一些区别包括

  1. 非格式化 I/O 将数据作为字节流读取和写入,没有任何格式,而格式化 I/O 允许您以预定义格式读取和写入数据。
  2. 灵活性:格式化 I/O 为输出格式化和数据表示提供了更多选项,而非格式化 I/O 提供的灵活性较小,更适合读取和写入二进制数据。
  3. 易用性:对于简单的输入和输出活动,格式化 I/O 更用户友好,而非格式化 I/O 需要更多的代码,更适合复杂的输入和输出过程。
  4. 效率:因为非格式化 I/O 不需要任何格式化或数据类型转换,所以它比格式化 I/O 更高效。

结论

格式化和非格式化 I/O 操作是在 C 编程中使用的输入/输出操作。非格式化 I/O 用于将数据作为字节流读取和写入,没有任何格式,而格式化 I/O 用于以预定义格式读取和写入数据。选择使用哪种 I/O 操作取决于程序的需求。两种 I/O 操作都有其优点和缺点。