本文章介绍了如何使用C++编程语言将文本文件中的数据逐行读取到字符串数组中,并最终打印输出的具体方法和步骤。
今天我们将讨论如何使用C++将一个文件读入数组再从数组中读出的方法。这是一个非常实用的技术,能够帮助开发者更好地处理文件操作。
以下是相关的知识点:
1. 文件操作:在 C++ 中,可以利用 `fstream` 头文件中的功能来实现对文件的读写。
2. 文件路径:我们使用变量 `filePath` 来存储要访问的文件路径。这里用到的是标准库函数 `strcpy()` 用于复制字符串至指定位置。
3. 打开文件:通过调用 `fopen()` 函数并将其指针赋值给 `pFile` 变量来打开文件,如果无法成功打开,则输出错误信息。
4. 获取文件长度:使用 `fseek()` 将读写头移动到文件末尾,并且利用 `_ftelli64()` 来获取当前的字节位置作为整个文件的大小。
5. 文件读取:通过调用 `fread()` 函数从打开的文件中读取数据,将其存储在数组变量 `buff` 中。使用宏定义 `MAX_PACK_SIZE` 控制每次读取的数据量上限。
6. 写入新文件:将缓冲区中的数据写入到另一个目标文件里,同样通过调用 `fwrite()` 实现。
7. 关闭已处理的文件:关闭打开的源文件和目的文件以释放资源。
以下是实现这个功能的具体代码:
```cpp
#include
#include
using namespace std;
#define MAX_PACK_SIZE 10240
int main() {
char filePath[256];
strcpy(filePath, F:视频1.mp4);
FILE *pFile;
pFile = fopen(filePath, r+b);
if (pFile == NULL) {
cout << 打开文件失败 << endl;
return 0;
}
fseek(pFile, 0, SEEK_END);
_int64 nLength = _ftelli64(pFile);
if (nLength == -1) {
return 0;
}
char buff[MAX_PACK_SIZE + 1];
// 目标文件路径
strcpy(filePath, E:图片Saved Pictures8.mp4);
FILE *pTargetFile = fopen(E:图片Saved Pictures8.mp4, a+b);
fseek(pFile, 0, SEEK_SET);
for (_int64 i = 0; i + MAX_PACK_SIZE < nLength; i += MAX_PACK_SIZE) {
fread(buff, sizeof(char), MIN(MAX_PACK_SIZE, (nLength - i)), pFile);
fwrite(buff, sizeof(char), MIN(MAX_PACK_SIZE, (nLength - i)), pTargetFile);
}
fclose(pFile);
fclose(pTargetFile);
}
```
这段代码实现了将一个文件读入数组再输出到另一个目标文件的功能。可以根据需要调整 `MAX_PACK_SIZE` 的值,以控制每次读取和写入的数据量大小。
希望这个方法能够帮助大家更好地处理相关的文件操作任务。