簡體   English   中英

在C ++中使用fread()解釋了此結果的原因是什么?

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

我正在讀取一個由以下17個字符組成的文本文件: 您好! 這是怎么回事?

使用fread()嘗試不同大小的讀取,我看到一些奇怪的結果。

char* buffer = new char[17];

{...}

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

{...}

fread(buffer, 33, 1, file);
std::cout << buffer << std::endl;
  • 打印Hello! What's up? Hello! What's up?

讀取17-32個字節中的任何一個都會產生這些神秘字符。 如果文件大小為17字節,那么如何解釋讀取大小為17字節的神秘字符呢?

您的第一個示例在字符串末尾缺少字符串終止符NULL

char* buffer = new char[18];

{...}

fread(buffer, 17, 1, file);
buffer[17] = '\0';
std::cout << buffer << std::endl;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM