C++ 如何用fread语句读取文件末尾
时间: 2023-07-18 17:05:47 浏览: 116
在C++中,可以使用`fseek`函数定位文件末尾,然后使用`ftell`函数获取文件长度,最后使用`fread`函数读取文件的内容。下面是一个示例代码:
```c++
#include <cstdio>
int main() {
FILE* fp = fopen("test.txt", "rb");
if (fp == nullptr) {
printf("Failed to open file!\n");
return -1;
}
// 定位文件末尾
fseek(fp, 0, SEEK_END);
// 获取文件长度
long len = ftell(fp);
// 将文件指针移动到文件开头
fseek(fp, 0, SEEK_SET);
// 读取文件内容
char* buffer = new char[len];
fread(buffer, sizeof(char), len, fp);
// 输出文件内容
printf("%s", buffer);
// 释放缓冲区
delete[] buffer;
// 关闭文件
fclose(fp);
return 0;
}
```
注意,这里使用了二进制模式(`"rb"`)打开文件,因为读取文件末尾时需要准确获取文件长度。如果是以文本模式打开文件,则可能会出现换行符等特殊字符,导致文件长度计算不准确。
相关问题
在C++中,能否使用fread(&seek_key_wordB, sizeof(char), 1, fpB);和if(seek_key_wordB == '\0')判断文件末尾
在C++中,可以使用fread(&seek_key_wordB, sizeof(char), 1, fpB)来读取文件中的数据,但是判断文件末尾的方式略有不同。
在C++中,我们可以使用feof()函数来判断文件是否已经到达文件末尾。具体操作如下:
```c++
FILE *fpB;
// 打开文件
fpB = fopen("fileB.txt", "rb");
// 判断文件是否打开成功
if(fpB == NULL) {
// 文件打开失败
perror("Error opening file");
exit(EXIT_FAILURE);
}
char seek_key_wordB;
// 读取文件中的数据
while(!feof(fpB)) {
fread(&seek_key_wordB, sizeof(char), 1, fpB);
// 判断是否到达文件末尾
if(feof(fpB)) {
break;
}
// 对读取到的数据进行处理
if(seek_key_wordB == '\0') {
// 处理逻辑
}
}
// 关闭文件
fclose(fpB);
```
上述代码中,我们使用feof()函数来判断文件是否已经到达文件末尾。如果文件已经到达文件末尾,则feof()函数会返回非0值,否则返回0。在读取文件数据时,我们使用while循环来不断读取文件中的数据,直到文件末尾。在读取到数据后,我们可以使用if语句来判断读取到的数据是否为文件末尾的标识符。如果是,则进行相应的处理逻辑。最后,我们需要关闭文件句柄,释放系统资源。
阅读全文