我有这个理论,我可以使用 fseek 和 ftell 获取文件大小并构建一个动态数组作为缓冲区。然后使用 fgets() 的缓冲区。我目前无法想出办法来做到这一点。
我的理论基于不知道第一个文件的大小(以字节为单位)。所以,我不知道要建立多大的缓冲区。如果文件超过 2 个演出怎么办?我希望能够构建一个缓冲区,该缓冲区将更改并识别我放入 SearchInFile() 的任何文件的文件大小。
这是我到目前为止所拥有的:
int SearchInFile(char *fname, char *fname2)
{
FILE *pFile, *pFile2;
int szFile, szFile2;
// Open first file
if( (fopen_s(&pFile, fname, "r")) != NULL )
{
return(-1);
}
// Open second file
if( (fopen_s(&pFile2, fname2, "r")) != NULL )
{
return(-1);
}
// Find file size
fseek(pFile, 0L, SEEK_END);
szFile = ftell(pFile);
// Readjust File Pointer
fseek(pFile, 0L, SEEK_SET);
std::vector <char> buff;
//char buff[szFile];
while(fgets(buff.push_back(), szFile, pFile))
{
}
任何想法或例子都会很棒。过去几个小时我一直在网上搜索。