在C++中使用 fread() 来解释这个结果是什么?

What explains this outcome using fread() in C++?

本文关键字:解释 结果 结果是 是什么 C++ fread      更新时间:2023-10-16

我正在阅读一个由以下 17 个字符组成的文本文件:你好!怎么了?

使用 fread(( 尝试不同大小的读取,我看到了一些奇怪的结果。

char* buffer = new char[17];
{...}
fread(buffer, 17, 1, file);
std::cout << buffer << std::endl;
  • 打印Hello! What's up?���
char* buffer = new char[33];
{...}
fread(buffer, 33, 1, file);
std::cout << buffer << std::endl;
  • 打印Hello! What's up?

读取 17-32 字节的任何地方都会产生这些神秘字符。如果文件大小为 17 字节,如何解释读取大小为 17 字节的神秘字符?

您的第一个示例是字符串末尾缺少字符串终止符 NULL

char* buffer = new char[18];
{...}
fread(buffer, 17, 1, file);
buffer[17] = '';
std::cout << buffer << std::endl;