北航刷题笔记 其六

北航刷题笔记 其六
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 |
|