c ++如何使用fread()在非windows平台中找到缓冲区的长度
c++ How do I find length of buffer in non-windows platforms using fread()
我有一个使用 ReadFile() 的函数,我在缓冲区末尾附加了一个“\0”:
HANDLE InFile;
FILE* InputFile;
DWRD len = ftell(InputFile);
buffer = new BYTE[len + 1];
if (ReadFile(InFile, buffer , len, &len2, NULL))
{
...
buffer [len2] = 0;
}
现在我想调整此函数以用于非windows 平台。我已经更改了 ReadFile() 并现在使用 fread() 。但是后来我没有可用的 len2,我想用它来附加 '\0':
FILE* InputFile;
DWRD len = ftell(InputFile);
buffer = new BYTE[len + 1];
if (fread(buffer ,1,len,InputFile))
{
// how can I find the length of the buffer (len2) now ?
buffer [len2] = 0; // Does not work !
...
}
如何获取缓冲区末尾的位置?
fread()
returns实际阅读的条数,eg:
FILE* InputFile;
...
DWORD len = ftell(InputFile);
buffer = new BYTE[len + 1];
size_t len2;
if ((len2 = fread(buffer, 1, len, InputFile)) > 0)
{
buffer [len2] = 0;
...
}
else
{
// use feof() and ferror() to check for errors...
}
我有一个使用 ReadFile() 的函数,我在缓冲区末尾附加了一个“\0”:
HANDLE InFile;
FILE* InputFile;
DWRD len = ftell(InputFile);
buffer = new BYTE[len + 1];
if (ReadFile(InFile, buffer , len, &len2, NULL))
{
...
buffer [len2] = 0;
}
现在我想调整此函数以用于非windows 平台。我已经更改了 ReadFile() 并现在使用 fread() 。但是后来我没有可用的 len2,我想用它来附加 '\0':
FILE* InputFile;
DWRD len = ftell(InputFile);
buffer = new BYTE[len + 1];
if (fread(buffer ,1,len,InputFile))
{
// how can I find the length of the buffer (len2) now ?
buffer [len2] = 0; // Does not work !
...
}
如何获取缓冲区末尾的位置?
fread()
returns实际阅读的条数,eg:
FILE* InputFile;
...
DWORD len = ftell(InputFile);
buffer = new BYTE[len + 1];
size_t len2;
if ((len2 = fread(buffer, 1, len, InputFile)) > 0)
{
buffer [len2] = 0;
...
}
else
{
// use feof() and ferror() to check for errors...
}