亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

C 语言文件管理概览

C 语言标准库 stdio.h 提供完整函数套件操作磁盘持久化数据。掌握这些工具能可靠地创建、读取、写入、关闭文件,保障数据完整性与程序稳健性。

核心文件处理函数

函数用途
fopen()打开现有文件或创建新文件
fclose()关闭打开的文件并释放资源
fprintf()向文件写入格式化文本
fscanf()从文件读取格式化数据
getc()从文件读取单字符
putc()向文件写入单字符
fgets()读取整行到缓冲区
fputs()向文件写入字符串(无格式化)
fseek()移动文件指针到指定位置
ftell()获取当前文件指针位置
rewind()将文件指针重置到开头

文件模式详解

模式说明
"r"只读打开;文件不存在则失败
"w"只写打开;截断现有文件或创建新文件
"a"追加打开;写入追加到文件末尾
"r+"读写打开,从文件开头
"w+"读写打开;截断现有文件
"a+"读写打开;追加新数据

创建文件

先声明文件指针,再用 fopen() 指定文件名与模式:

FILE *fp;
fp = fopen("data.txt", "w");

文件不存在则创建;存在则按模式决定保留或覆盖。

也可用绝对路径:

fp = fopen("D:/data.txt", "w");

文件创建步骤图示:

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

关闭文件

完成所有文件操作后,务必调用 fclose() 释放文件描述符并刷新缓冲区:

fp = fopen("data.txt", "r");
...
fclose(fp);

成功返回 0,失败返回 EOF。虽程序退出时系统自动关闭文件,但显式关闭是最佳实践。

写入文件

写入时需显式添加换行符(\n)。常用写函数:

示例:fputc()

#include <stdio.h>
int main() {
    int i;
    FILE *fptr;
    const char *str = "Guru99 Rocks\n";
    fptr = fopen("fputc_test.txt", "w");
    for (i = 0; str[i] != '\n'; i++) {
        fputc(str[i], fptr);
    }
    fclose(fptr);
    return 0;
}

输出文件 fputc_test.txt 内容:

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

示例:fputs()

#include <stdio.h>
int main() {
    FILE *fp = fopen("fputs_test.txt", "w+");
    fputs("This is Guru99 Tutorial on fputs,", fp);
    fputs("We don't need to use for loop\n", fp);
    fputs("Easier than fputc function\n", fp);
    fclose(fp);
    return 0;
}

结果文件 fputs_test.txt:

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

示例:fprintf()

#include <stdio.h>
int main() {
    FILE *fptr = fopen("fprintf_test.txt", "w");
    fprintf(fptr, "Learning C with Guru99\n");
    fclose(fptr);
    return 0;
}

结果文件 fprintf_test.txt:

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

读取文件

三大核心读函数:

完整演示:用三种方式读取 fprintf_test.txt:

#include <stdio.h>
int main() {
    FILE *fp;
    char buffer[50], c;
    fp = fopen("fprintf_test.txt", "r");
    printf("----read a line----\n");
    fgets(buffer, 50, fp);
    printf("%s\n", buffer);
    fclose(fp);
    fp = fopen("fprintf_test.txt", "r");
    printf("----read and parse data----\n");
    char str1[10], str2[2], str3[20], str4[2];
    fscanf(fp, "%s %s %s %s", str1, str2, str3, str4);
    printf("Read String1 |%s|\n", str1);
    printf("Read String2 |%s|\n", str2);
    printf("Read String3 |%s|\n", str3);
    printf("Read String4 |%s|\n", str4);
    fclose(fp);
    fp = fopen("fprintf_test.txt", "r");
    printf("----read the entire file----\n");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

程序输出:

----read a line----
Learning C with Guru99
----read and parse data----
Read String1 |Learning|
Read String2 |C|
Read String3 |with|
Read String4 |Guru99|
----read the entire file----
Learning C with Guru99

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

getc 与 putc 交互式字符 I/O

最小示例:读取用户输入、写入文件、再读回:

#include <stdio.h>
int main() {
    FILE *fp;
    int c;
    printf("File Handling\n");
    fp = fopen("demo.txt", "w");
    while ((c = getchar()) != EOF) {
        putc(c, fp);
    }
    fclose(fp);
    printf("Data Entered:\n");
    fp = fopen("demo.txt", "r");
    while ((c = fgetc(fp)) != EOF) {
        putchar(c);
    }
    fclose(fp);
    return 0;
}

运行示例:

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

C 语言文件 I/O 实战:创建、打开、读写、关闭文件完全指南

核心要点

C语言

  1. I/O 卡深度解析:工作原理、工业级应用与维修价值
  2. 自制树莓派 I/O 扩展排线与插针适配板:分步图文教程
  3. Apacer全球首发CV110-SD与CV110-MSD高性能闪存卡
  4. Apacer 推出 SV250 工业级 SSD:560MB/s 读取、520MB/s 写入
  5. acceed EDAM-4200 系列:集成 I/O 模块,实现可扩展、可靠的数据通信
  6. 精通C#变量与基础数据类型:完整指南
  7. C 语言输入输出(I/O)精通:scanf() 与 printf() 详解
  8. C语言文件处理完全指南:fopen、fprintf、fread 与 fseek
  9. C 语言文件 I/O 实战:创建、打开、读写与二进制操作
  10. C 语言头文件详解:类型、用法与最佳实践
  11. C++文件I/O完全指南:fstream读写、打开模式、定位指针与完整实例
  12. Python 文件 I/O:掌握文件操作、读写与管理