C: fprintf fwrite 函数的区别

fprintf 和 fwrite 是两个不同的函数,它们在C语言中用于将数据写入文件,但有一些关键的区别:

数据类型:
  • fprintf:主要用于将数据以文本形式写入文件。它将数据转换为文本字符串,包括数字和字符,并根据格式字符串进行格式化输出。
  • fwrite:主要用于将二进制数据写入文件。它直接将内存中的数据按原样写入文件,不进行字符转换或格式化。
格式化:
  • fprintf:需要指定格式字符串,以确定如何将数据转换为文本。例如,%d 表示整数,%s 表示字符串等。这允许您在文件中以可读的方式保存数据。
  • fwrite:不需要格式化,它直接将内存中的二进制数据写入文件。因此,写入的文件通常是以二进制形式保存的,不易阅读。
用途:
  • fprintf:适用于创建包含文本内容的文件,如配置文件、日志文件等,其中数据需要以可读的方式保存。
  • fwrite:适用于处理二进制数据,如图像、音频、视频文件等,或需要以原始形式保存数据的情况。
性能:

fwrite 通常比 fprintf 更快,因为它不涉及文本转换和格式化。对于大量数据的写入,特别是二进制数据,它是更高效的选择。
根据您的需求和要写入的数据类型,您可以选择使用 fprintf 或 fwrite。如果您需要将文本数据写入文件并希望以可读的方式查看,那么 fprintf 是更合适的选择。如果您处理二进制数据或需要最大的性能,则应使用 fwrite。

使用 fprintf 写入数据到文件:
#include <stdio.h>

int main() {
    
    
    // 打开文件以写入数据
    FILE *file = fopen("data.txt", "w");

    if (file == NULL) {
    
    
        perror("无法打开文件");
        return 1;
    }

    // 数据
    int data[] = {
    
    1, 2, 3, 4, 5};
    int n = sizeof(data) / sizeof(data[0]);

    // 使用 fprintf 逐行写入数据
    for (int i = 0; i < n; i++) {
    
    
        fprintf(file, "%d\n", data[i]);
    }

    // 关闭文件
    fclose(file);

    return 0;
}

这个示例将整数数组中的数据逐行写入名为 “data.txt” 的文本文件。

使用 fwrite 写入数据到文件:
#include <stdio.h>

int main() {
    
    
    // 打开文件以写入数据
    FILE *file = fopen("data.bin", "wb");

    if (file == NULL) {
    
    
        perror("无法打开文件");
        return 1;
    }

    // 数据
    int data[] = {
    
    1, 2, 3, 4, 5};
    int n = sizeof(data) / sizeof(data[0]);

    // 使用 fwrite 一次性写入整个数组
    fwrite(data, sizeof(int), n, file);

    // 关闭文件
    fclose(file);

    return 0;
}

这个示例将整数数组中的数据一次性写入名为 “data.bin” 的二进制文件。

fprintf 适用于将数据以文本形式逐行写入文件,而 fwrite 适用于一次性写入二进制数据。您可以根据您的需求选择适当的方法来写入文件。

猜你喜欢

转载自blog.csdn.net/m0_62865498/article/details/133716532