北航刷题笔记 其六

北航刷题笔记 其六
fufhaha7.I/O和文件操作
1.文件:
读取文件:FILE *filea=fopen(“ “)(filea是给这个文件定义的名字,相当于变量名)
关闭文件(最后):fclose(“filea”)
1. 文件的打开 (fopen)
fopen 是用来打开一个文件并返回一个文件指针的函数。文件指针是指向文件的一个指针,用来在文件中进行读写操作。
函数原型:
1 | c |
filename: 要打开的文件名。mode: 打开文件的模式,决定了你如何读取、写入或修改该文件。
常见的打开模式:
"r": 只读模式。文件必须存在,文件指针指向文件开头。"w": 只写模式。如果文件存在,文件内容会被清空;如果文件不存在,会创建新文件。"a": 追加模式。如果文件存在,数据会被写入文件末尾;如果文件不存在,会创建新文件。"r+": 读写模式。文件必须存在,文件指针指向文件开头。"w+": 读写模式。如果文件存在,文件内容会被清空;如果文件不存在,会创建新文件。"a+": 读写追加模式。如果文件存在,数据会被追加到文件末尾;如果文件不存在,会创建新文件。
示例:
1 | c |
上面的代码会打开名为 example.txt 的文件,并以只读模式打开。如果文件不存在,fopen 会返回 NULL。
2. 文件的关闭 (fclose)
fclose 用来关闭文件。每当你完成了文件的操作后,应该调用 fclose 来关闭文件。这样做可以释放操作系统资源,并确保文件数据正确写入。
函数原型:
1 | int fclose(FILE *stream); |
stream: 要关闭的文件的指针。
如果成功关闭文件,fclose 返回 0;如果关闭失败,返回 EOF。
示例:
1 | fclose(file); |
在完成对 file 文件的操作后,调用 fclose 关闭该文件。
3. 文件的读取 (fgetc 和 fgets)
读取文件内容时,我们常用的函数是 fgetc 和 fgets。
fgetc:
fgetc 用来从文件中读取单个字符,并返回该字符。如果已经读取到文件末尾,返回 EOF。
函数原型:
1 | int fgetc(FILE *stream); |
stream: 要读取的文件指针。
示例:
1 | char ch = fgetc(file); |
上面的代码会从 file 文件中读取一个字符,并将其存储在 ch 中。如果已经读取到文件末尾,fgetc 会返回 EOF。
fgets:
fgets 用来读取一行文本,直到遇到换行符或达到指定的字符数为止。它比 fgetc 更适合读取一整行。
函数原型:
1 | char *fgets(char *str, int num, FILE *stream); |
str: 存储读取到的字符的数组。num: 最多读取的字符数(包括\0)。stream: 要读取的文件指针。
示例:
1 | char line[100]; |
这段代码从 file 中读取最多 100 个字符,并将其存储在 line 数组中,直到遇到换行符或达到 100 字符为止。
4. 文件的写入 (fputc 和 fputs)
文件写入时,我们常用的函数是 fputc 和 fputs。
fputc:
fputc 用来向文件写入单个字符。
函数原型:
1 | int fputc(int c, FILE *stream); |
c: 要写入的字符(以整数形式表示)。stream: 要写入的文件指针。
示例:
1 | fputc('A', file); |
这段代码会向 file 写入字符 'A'。
fputs:
fputs 用来写入一个字符串。
函数原型:
1 | int fputs(const char *str, FILE *stream); |
str: 要写入的字符串。stream: 要写入的文件指针。
示例:
1 | fputs("Hello, World!", file); |
这段代码会向 file 写入字符串 "Hello, World!"。
5. 文件的错误处理
- 检查文件是否成功打开:
fopen如果返回NULL,表示文件打开失败。 - 检查文件读写操作是否成功:在读取或写入文件时,返回
EOF可能表示发生了错误。
例如:
1 | if (file == NULL) { |
6. 文件指针与文件缓冲区
文件在操作时通常使用缓冲区。文件指针指向当前操作文件中的位置。你可以使用 fseek 和 ftell 等函数来操作文件指针的位置。
fseek:
用于移动文件指针。
ftell:
返回文件指针当前的位置。
示例:
1 | fseek(file, 0, SEEK_SET); // 将文件指针移动到文件开头 |
总结:
fopen用于打开文件并返回文件指针。fgetc和fgets用于读取文件内容。fputc和fputs用于向文件写入内容。fclose用于关闭文件。
1 |
|








