C语言文件操作函数详解 C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有: 文件的打开 fopen():打开文件 文件的关闭 fclose():关闭文件 文件的读写 fgetc():读取一个字符 fputc():写入一个字符 fgets():读取一个字符串 fputs():写入一个字符串 fprintf():写入格式化数据 fscanf():格式化读取数据 fread():读取数据 fwrite():写入数据 文件状态检查 feof():文件是否结束 ferror():文件读/写是否出错 clearerr():清除文件错误标志 ftell():文件指针的当前位置 文件指针定位 rewind():把文件指针移到开始处 fseek():重定位文件指针 参数解释: “r”:以只读的形式打开文本文件(不存在则出错) “w”:以只写的形式打开文本文件(若不存在则新建,反之,则从文件起始位置写,覆盖原内容) “a”:以追加的形式打开文本文件(若不存在,则新建;反之,在原文件后追加) “r+”:以读写的形式打开文本文件(读时,从头开始; ### C语言文件操作函数详解 #### 一、概述 C语言是一种高级编程语言,它不像某些其他语言(如Python)那样内置了丰富的输入输出指令。相反,C语言依赖于ANSI C提供的标准库函数来进行所有输入输出操作。本文将详细介绍C语言中的文件操作函数,并通过示例帮助理解这些函数的工作原理。 #### 二、文件操作函数分类 C语言中的文件操作函数大致可以分为以下几类: 1. **文件的打开**:`fopen()`。 2. **文件的关闭**:`fclose()`。 3. **文件的读写**: - `fgetc()`:读取一个字符。 - `fputc()`:写入一个字符。 - `fgets()`:读取一个字符串。 - `fputs()`:写入一个字符串。 - `fprintf()`:写入格式化数据。 - `fscanf()`:格式化读取数据。 - `fread()`:读取数据。 - `fwrite()`:写入数据。 4. **文件状态检查**: - `feof()`:文件是否结束。 - `ferror()`:文件读/写是否出错。 - `clearerr()`:清除文件错误标志。 - `ftell()`:文件指针的当前位置。 5. **文件指针定位**: - `rewind()`:把文件指针移到开始处。 - `fseek()`:重定位文件指针。 #### 三、具体函数介绍 ##### 1. 文件的打开 - `fopen()` **函数原型**: ```c FILE *fopen(const char *filename, const char *mode); ``` **参数**: - `filename`:文件名或路径。 - `mode`:打开模式。 **返回值**: - 成功返回指向文件的指针。 - 失败返回 `NULL`。 **示例**: ```c FILE *fp; fp = fopen("test.txt", "r"); if (fp == NULL) { perror("Error opening file"); } else { // 文件成功打开 } ``` ##### 2. 文件的关闭 - `fclose()` **函数原型**: ```c int fclose(FILE *stream); ``` **参数**: - `stream`:文件流。 **返回值**: - 成功返回 0。 - 失败返回 EOF。 **示例**: ```c int ret = fclose(fp); if (ret != 0) { perror("Error closing file"); } else { // 文件成功关闭 } ``` ##### 3. 文件的读写 - **`fgetc()`**:读取单个字符。 - **`fputc()`**:写入单个字符。 - **`fgets()`**:读取一行字符串。 - **`fputs()`**:写入一行字符串。 - **`fprintf()`**:写入格式化字符串。 - **`fscanf()`**:格式化读取。 - **`fread()`**:读取数据块。 - **`fwrite()`**:写入数据块。 **示例**: - **读取字符**: ```c int ch; FILE *fp; fp = fopen("input.txt", "r"); if (fp != NULL) { while ((ch = fgetc(fp)) != EOF) { putchar(ch); } fclose(fp); } ``` - **写入字符**: ```c char ch; FILE *fp; fp = fopen("output.txt", "w"); if (fp != NULL) { ch = getchar(); while (ch != EOF) { fputc(ch, fp); ch = getchar(); } fclose(fp); } ``` - **读取字符串**: ```c char str[100]; FILE *fp; fp = fopen("input.txt", "r"); if (fp != NULL) { fgets(str, sizeof(str), fp); printf("%s", str); fclose(fp); } ``` - **写入字符串**: ```c char str[] = "Hello, World!"; FILE *fp; fp = fopen("output.txt", "w"); if (fp != NULL) { fputs(str, fp); fclose(fp); } ``` ##### 4. 文件状态检查 - **`feof()`**:判断是否到达文件末尾。 - **`ferror()`**:判断是否有错误发生。 - **`clearerr()`**:清除错误标志。 - **`ftell()`**:获取当前文件指针的位置。 **示例**: - **检查文件末尾**: ```c FILE *fp; fp = fopen("test.txt", "r"); if (fp != NULL) { while (!feof(fp)) { // 读取操作 } fclose(fp); } ``` - **检查错误**: ```c FILE *fp; fp = fopen("test.txt", "r"); if (fp != NULL) { while (ferror(fp)) { // 错误处理 } fclose(fp); } ``` - **清除错误**: ```c FILE *fp; fp = fopen("test.txt", "r"); if (fp != NULL) { clearerr(fp); fclose(fp); } ``` - **获取文件指针位置**: ```c FILE *fp; long pos; fp = fopen("test.txt", "r"); if (fp != NULL) { pos = ftell(fp); printf("Current position: %ld\n", pos); fclose(fp); } ``` ##### 5. 文件指针定位 - **`rewind()`**:将文件指针移动到文件开头。 - **`fseek()`**:将文件指针移动到指定位置。 **示例**: - **移动到文件开头**: ```c FILE *fp; fp = fopen("test.txt", "r+"); if (fp != NULL) { rewind(fp); // 重新读取 fclose(fp); } ``` - **移动到指定位置**: ```c FILE *fp; fp = fopen("test.txt", "r+"); if (fp != NULL) { fseek(fp, 10L, SEEK_SET); // 从位置10开始读取 fclose(fp); } ``` #### 四、总结 本文详细介绍了C语言中的文件操作函数,包括文件的打开、关闭、读写、状态检查以及指针定位等关键操作。通过学习这些函数,你可以更好地理解和掌握如何在C语言中有效地处理文件操作。每个函数都有其特定的应用场景,合理地选择和使用这些函数能够提高程序的效率和可靠性。希望本文对你有所帮助!
剩余7页未读,继续阅读
- 粉丝: 3144
- 资源: 322
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助