C语言中,创建并写入文本文件可以通过多种方式实现。fprintf和fputs适合处理格式化输出,而fwrite和write系统调用则更适合处理二进制数据或大量数据的写入。freopen提供了一种重定向标准输出的简便方法,适用于需要将程序的标准输出重定向到文件的场景。

1、使用标准库函数fopen和fprintf

使用fopenfprintf实现比较简单,易于理解和实现。支持格式化输出,方便处理复杂的数据结构。

#include <stdio.h>

int main() {
    FILE *file = fopen("example1.txt", "w");  // 以写入模式打开文件
    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    
    fprintf(file, "Hello, World!\n");  // 写入文本内容
    fprintf(file, "This is a test file.\n");
    
    fclose(file);  // 关闭文件
    printf("执行完成");
    return 0;
}

2、使用标准库函数fopen和fputs

使用fopenfputs适用于写入字符串,比fprintf更高效。代码简洁,易于维护。

#include <stdio.h>

int main() {
    FILE *file = fopen("example2.txt", "w");
    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    
    fputs("Hello, World!\n", file);  // 使用 fputs 写入字符串
    fputs("This is another test file.\n", file);
    
    fclose(file);
    printf("执行完成");
    return 0;
}

3、使用标准库函数fopen和fwrite

使用fopenfwrite适用于二进制和文本数据的写入。提供了更底层的控制,可以精确控制写入的数据量。

#include <stdio.h>
#include <string.h>

int main() {
    FILE *file = fopen("example3.txt", "w");
    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    
    const char *text = "Hello, World!\nThis is yet another test file.\n";
    fwrite(text, sizeof(char), strlen(text), file);  // 使用 fwrite 写入数据
    
    fclose(file);
    return 0;
}

4、使用标准库函数freopen

使用freopen可以重定向标准输出到文件,适用于需要将程序输出保存到文件的场景。代码简洁,易于实现。

#include <stdio.h>

int main() {
    freopen("example4.txt", "w", stdout);  // 重定向标准输出到文件

    printf("Hello, World!\n");  // 使用 printf 输出到文件
    printf("This file was created using freopen.\n");
    
    fclose(stdout);  // 关闭标准输出文件
    return 0;
}

5、使用系统调用open和write(基于POSIX标准)

该方法提供了更底层的文件操作,性能更高。适用于需要精细控制文件操作的场景,如高性能服务器。每种方法都有其独特的优点,选择哪种方法取决于具体的应用场景和需求。

#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main() {
    int file = open("example5.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);  // 打开文件
    if (file < 0) {
        printf("无法打开文件\n");
        return 1;
    }
    
    const char *text = "Hello, World!\nWriting with POSIX API.\n";
    write(file, text, strlen(text));  // 使用 write 写入数据
    
    close(file);  // 关闭文件
    return 0;
}

推荐文档

相关文档

大家感兴趣的内容

随机列表