C 文件读写

  • Post category:C

当我们进行 C 编程时,经常需要读写文件进行数据的输入输出。如何对文件进行读写操作是我们需要学习的重要一环。下面我将详细讲解 C 文件读写操作的完整使用攻略,包括文件的打开、关闭、读取以及写入操作。

打开文件

要进行文件的读写操作,首先需要将文件打开。在 C 语言中,使用 fopen() 函数打开一个文件,其语法为:

FILE *fopen(const char *filename, const char *mode);
  • filename : 需要打开的文件名称,可以是完整路径,也可以是相对路径;
  • mode : 打开文件时的模式,包括只读、只写、追加等多种模式。常见的打开模式如下:
mode 操作
r 只读
w 只写
a 追加
r+ 读写
w+ 读写
a+ 读写追加

例如读取文件 test.txt,可以使用以下代码:

FILE *fp;
fp=fopen("test.txt", "r");

在打开文件时,需要注意三点:

  1. 文件是否存在

打开一个不存在的文件是没有意义的,因此在打开文件时需要检查文件是否存在,如果不存在,则需要创建一个文件。

  1. 文件权限

在一些情况下,需要访问的文件可能是受保护的文件,因此在打开文件时需要对文件进行相应的权限配置。

  1. 文件名长度

在 Windows 系统中,文件名的长度最大不可超过 260 个字符,如果超过了这个长度,系统会无法识别该文件名。

关闭文件

文件打开后,需要进行文件读写操作,完成后需要将文件关闭,释放相关的内存资源。在 C 语言中,使用 fclose() 函数关闭文件,其语法为:

int fclose(FILE *fp);
  • fp : 待关闭的文件指针。

例如关闭文件 test.txt,可以使用以下代码:

fclose(fp);

在关闭文件时,需要注意以下几点:

  1. 写入文件

在对文件进行写操作时,需要确保文件关闭前写入的数据已经写入到磁盘中,否则有可能会丢失数据。

  1. 内存泄漏

在 C 语言中,打开文件时会分配一定的内存空间,因此在使用完毕后需要手动释放内存。

读取文件

文件读取是常见的文件操作之一。在 C 语言中,使用 fgets() 函数读取文件中的一行数据,其语法为:

char *fgets(char *s, int size, FILE *stream);
  • s : 存储读取数据的字符串指针;
  • size : 读取数据的最大长度;
  • stream : 待读取文件的指针。

例如读取文件 test.txt 中的一行数据,可以使用以下代码:

char buffer[1024];
fgets(buffer, 1024, fp);

在读取文件时,需要注意以下几点:

  1. 编码格式

在读取文件时需要确保文件的编码格式与读取的编码格式一致,否则可能会出现乱码等情况。

  1. 文件指针位置

在每次读取文件时,文件指针会指向下一行,因此读取多个文件时需要确认文件指针位置是否正确。

  1. 读取内容是否完整

文件的内容是分行存储的,因此在读取文件时需要确认读取内容是否完整。

写入文件

文件写入是常见的文件操作之一。在 C 语言中,使用 fprintf() 函数向文件写入数据,其语法为:

int fprintf(FILE *stream, const char *format, ...);
  • stream : 待写入的文件指针;
  • format : 写入格式化字符串;
  • … : 待写入的数据信息,可由多个参数组成。

例如向文件 test.txt 中写入一行数据,可以使用以下代码:

fprintf(fp, "Hello World\n");

在写入文件时,需要注意以下几点:

  1. 写入位置

在多次写入文件时,需要确认每次写入的位置是否正确,否则有可能会造成叠加数据或覆盖数据的问题。

  1. 编码格式

在写入文件时需要确保文件的编码格式与写入的编码格式一致,否则可能会出现乱码等情况。

下面是两个关于文件读写的示例代码:

示例一:读取文件 test.txt

#include<stdio.h>
int main() {
    FILE *fp;
    fp=fopen("test.txt", "r");
    if(fp==NULL) {
        printf("File not found.");
        return 1;
    }
    char buffer[1024];
    while(fgets(buffer, 1024, fp)) {
        printf("%s", buffer);
    }
    fclose(fp);
    return 0;
}

示例二:向文件 message.txt 写入数据

#include<stdio.h>
int main() {
    FILE *fp;
    fp = fopen("message.txt", "w");
    fprintf(fp, "Hello World\n");
    fprintf(fp, "How are you?\n");
    fclose(fp);
    return 0;
}

通过以上攻略和示例,相信读者已经可以学会如何进行 C 文件读写操作了。