C++中文件IO流的使用
发布时间: 2023-12-16 12:50:00 阅读量: 14 订阅数: 11
# 1. 简介
## 1.1 什么是文件IO流
在计算机中,文件输入/输出流(IO流)是指数据在文件之间传输的抽象概念。输入流用于从文件中读取数据,输出流用于向文件中写入数据。
## 1.2 文件IO流的作用
文件IO流的作用是实现文件的读写操作,通过使用文件IO流,程序可以与文件交换数据,实现数据的持久化存储。
## 1.3 C语言中支持的文件IO流
在C语言中,通过文件指针和相关的文件IO函数,可以实现对文件的读写操作。C语言中常用的文件IO函数包括 fopen、fclose、fgetc、fputc、fgets、fputs、fread、fwrite 等。
### 2. 打开与关闭文件
在C语言中,需要使用文件IO流进行文件的读写操作。首先需要打开文件以便进行读写操作,完成读写操作后需要关闭文件。
#### 2.1 fopen函数的使用
使用fopen函数可以打开一个文件,并返回一个指向FILE类型的指针,用于后续的文件读写操作。
```c
FILE *fopen(const char *filename, const char *mode);
```
- `filename`:需要打开的文件名
- `mode`:打开文件的模式,常见的包括"r"(只读)、"w"(只写)、"a"(追加)等
示例代码:
```c
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("文件打开失败!\n");
} else {
printf("文件打开成功!\n");
fclose(file);
}
return 0;
}
```
**代码说明:**
- 使用`fopen`函数打开了一个名为"example.txt"的文件,以只读模式打开。
- 如果文件打开失败,输出"文件打开失败!",否则输出"文件打开成功!"。
- 最后使用`fclose`函数关闭文件。
**代码结果说明:**
如果当前目录下存在名为"example.txt"的文件,则会输出"文件打开成功!",否则会输出"文件打开失败!"。
#### 2.2 fclose函数的使用
使用fclose函数可以关闭之前打开的文件流,释放资源并将文件关闭。
```c
int fclose(FILE *stream);
```
- `stream`:指向FILE类型的指针,代表需要关闭的文件流
示例代码:
```c
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("文件打开失败!\n");
} else {
printf("文件打开成功!\n");
fclose(file);
printf("文件关闭成功!\n");
}
return 0;
}
```
**代码说明:**
- 使用`fclose`函数可以关闭之前打开的文件流,并输出"文件关闭成功!"。
- 文件流关闭后,不可再做读写操作。
**代码结果说明:**
如果文件打开成功,会输出"文件打开成功!"和"文件关闭成功!";如果文件打开失败,则只会输出"文件打开失败!"。
### 3. 读取文件内容
文件IO流的一个重要功能是读取文件的内容。在C语言中,提供了多个函数可以实现这一功能,包括fgetc、fgets和fread等。下面分别介绍这些函数的使用方法。
#### 3.1 fgetc函数的使用
fgetc函数用于从文件中读取一个字符,并将其返回。其声明如下:
```c
int fgetc(FILE *stream);
```
其中,stream是一个指向文件的指针。下面是一个使用fgetc函数从文件中逐个读取字符的示例:
```c
#include <stdio.h>
int main() {
FILE *fp;
int c;
fp = fopen("file.txt", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return -1;
}
while ((c = fgetc(fp)) != EOF) {
printf("%c", c);
}
fclose(fp);
return 0;
}
```
上述代码中,首先使用fopen函数打开名为file.txt的文件,并以只读模式打开。如果文件打开成功,则使用while循环逐个读取文件中的字符,直到文件结束符EOF(End-Of-File)。读取到的字符通过printf函数输出。最后使用fclose函数关闭文件。
#### 3.2 fgets函数的使用
fgets函数用于从文件中读取一行内容,并将其存储到一个指定的字符串数组中。其声明如下:
```c
char *fgets(char *str, int n, FILE *stream);
```
其中,str是一个指向字符串数组的指针,n是指定的最大读取字符数(包括换行符),stream是一个指向文件的指针。下面是一个使用fgets函数读取文件中的每一行的示例:
```c
#include <stdio.h>
int main() {
FILE *fp;
char line[256];
fp = fopen("file.txt", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return -1;
}
while (fgets(line, sizeof(line), fp) != NULL) {
printf("%s", line);
}
fclose(fp);
return 0;
}
```
上述代码中,首先使用fopen函数打开名为file.txt的文件,并以只读模式打开。如果文件打开成功,则使用while循环逐行读取文件的内容,每次读取的一行内容存储在line字符串数组中,然后通过printf函数输出。最后使用fclose函数关闭文件。
#### 3.3 fread函数的使用
fread函数用于从文件中读取一定数量的数据,并存储到指定的缓冲区中。其声明如下:
```c
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
```
其中,ptr是一个指向缓冲区的指针,size是每个数据项的字节数,count是要读取的数据项的数量,stream是一个指向文件的指针。下面是一个使用fread函数读取二进制文件的示例:
```c
#include <stdio.h>
int ma
```
0
0