当前位置:首页 > C > 正文

C语言文件读写详解(从零开始掌握C语言文件操作)

在C语言编程中,C语言文件读写是一项非常基础且重要的技能。无论是保存用户数据、读取配置文件,还是处理日志信息,都离不开对文件的操作。本教程将带你从零开始,一步步掌握C语言文件操作的核心函数和使用方法,即使是编程小白也能轻松上手!

C语言文件读写详解(从零开始掌握C语言文件操作) C语言文件读写 C语言文件操作 fopen函数 fread和fwrite函数 第1张

一、文件指针与 fopen 函数

在C语言中,所有文件操作都通过一个叫做“文件指针”的变量来完成,其类型为 FILE *。要打开一个文件,我们使用 fopen() 函数。

fopen 函数的语法如下:

FILE *fopen(const char *filename, const char *mode);  

其中:

  • filename:要打开的文件名(包括路径)
  • mode:打开模式,例如:"r"(只读)、"w"(写入,覆盖原内容)、"a"(追加)等

示例:打开一个名为 data.txt 的文件用于写入:

#include <stdio.h>int main() {    FILE *fp;    fp = fopen("data.txt", "w"); // 以写入模式打开文件    if (fp == NULL) {        printf("无法打开文件!\n");        return 1;    }    printf("文件打开成功!\n");    fclose(fp); // 记得关闭文件    return 0;}  

二、写入文件:fprintf 与 fwrite

写入文本数据常用 fprintf(),类似于 printf(),但输出到文件:

fprintf(fp, "Hello, 文件!\n");  

如果要写入二进制数据(如结构体),则使用 fwrite() 函数:

struct Student {    char name[20];    int age;};struct Student s = {"张三", 20};fwrite(&s, sizeof(struct Student), 1, fp);  

三、读取文件:fscanf 与 fread

读取文本数据使用 fscanf(),用法类似 scanf()

char buffer[100];fscanf(fp, "%s", buffer);  

读取二进制数据则使用 fread(),这是 fread和fwrite函数中的读取部分:

struct Student s2;fread(&s2, sizeof(struct Student), 1, fp);  

四、关闭文件:fclose

无论读写操作是否完成,都必须使用 fclose() 关闭文件,以释放系统资源并确保数据写入磁盘:

fclose(fp);  

五、完整示例:写入并读取学生信息

#include <stdio.h>#include <string.h>struct Student {    char name[20];    int age;};int main() {    FILE *fp;    struct Student s1 = {"李四", 22};    struct Student s2;    // 写入二进制文件    fp = fopen("student.dat", "wb");    if (fp == NULL) {        printf("写入文件失败!\n");        return 1;    }    fwrite(&s1, sizeof(struct Student), 1, fp);    fclose(fp);    // 读取二进制文件    fp = fopen("student.dat", "rb");    if (fp == NULL) {        printf("读取文件失败!\n");        return 1;    }    fread(&s2, sizeof(struct Student), 1, fp);    fclose(fp);    printf("读取到的学生:姓名=%s,年龄=%d\n", s2.name, s2.age);    return 0;}  

六、小结

通过本教程,你已经掌握了 C语言文件读写 的基本流程:使用 fopen 打开文件,用 fprintf/fwrite 写入,用 fscanf/fread 读取,最后用 fclose 关闭。记住,良好的文件操作习惯能避免数据丢失和程序崩溃。

希望这篇关于 C语言文件操作 的教程对你有帮助!动手实践是掌握编程的关键,快去写个小程序试试吧!