C 文件读写学习笔记

1. 文件操作概述

在C语言中,要完成对文件的操作需要使用到stdio.h中提供的一系列函数。文件操作主要包括以下几个步骤:

  1. 打开文件
  2. 对文件进行读/写操作
  3. 关闭文件

2. 打开文件

打开文件需要使用fopen()函数。其语法如下:

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

其中,filename表示要打开的文件名称,mode表示文件打开的模式。mode参数有以下几种可能值:

  • "r": 以只读方式打开文件
  • "w": 以写方式打开文件,如果文件不存在,则创建一个新的文件;否则清空文件中的内容
  • "a": 以追加写入方式打开文件,如果文件不存在,则创建一个新的文件

例如,要以只读方式打开名为test.txt的文件,可以这样使用fopen()函数:

cCopy Code
FILE *fp = fopen("test.txt", "r"); if (fp == NULL) { printf("File open failed!\n"); return -1; }

3. 对文件进行读/写操作

3.1 读取文件内容

读取文件内容需要使用fscanf()函数或fgets()函数。fscanf()函数可以按照指定的格式从文件中读取数据,而fgets()函数则是按行读取文件内容。

举个例子,如果要从打开的文件中读取一个整数,可以这样使用fscanf()函数:

cCopy Code
int num; fscanf(fp, "%d", &num);

如果要按行读取文件内容,则可以这样使用fgets()函数:

cCopy Code
char line[1024]; while (fgets(line, 1024, fp) != NULL) { printf("%s", line); }

3.2 写入文件内容

写入文件内容需要使用fprintf()函数或fputs()函数。fprintf()函数可以按照指定的格式将数据写入文件,而fputs()函数则是写入一行文本。

举个例子,如果要向打开的文件中写入一个整数,可以这样使用fprintf()函数:

cCopy Code
int num = 123; fprintf(fp, "%d", num);

如果要写入一行文本,则可以这样使用fputs()函数:

cCopy Code
char *str = "Hello world!"; fputs(str, fp);

4. 关闭文件

完成文件操作后,需要使用fclose()函数关闭文件。其语法如下:

cCopy Code
int fclose(FILE *stream);

其中,stream表示要关闭的文件句柄。举个例子,在打开文件并读取完文件内容后,可以这样关闭文件:

cCopy Code
fclose(fp);

5. 完整示例

下面是一个完整的示例,演示了如何打开一个文件、写入和读取数据,并最终关闭文件:

cCopy Code
#include <stdio.h> int main() { FILE *fp = fopen("test.txt", "w"); if (fp == NULL) { printf("File open failed!\n"); return -1; } int num = 123; fprintf(fp, "%d\n", num); char *str = "Hello world!"; fputs(str, fp); fclose(fp); fp = fopen("test.txt", "r"); if (fp == NULL) { printf("File open failed!\n"); return -1; } fscanf(fp, "%d", &num); printf("Read num: %d\n", num); char line[1024]; while (fgets(line, 1024, fp) != NULL) { printf("%s", line); } fclose(fp); return 0; }

该示例打开test.txt文件,先将数字123和文本Hello world!写入文件中,并在读取文件内容时先读取数字、再按行读取文本。