gpt4 book ai didi

c - 使用 fread 读取 16 字节 block

转载 作者:行者123 更新时间:2023-11-30 19:59:31 36 4
gpt4 key购买 nike

我正在编写一些代码,这些代码应该一次从输入文件中读取 16 个字节的 block 。我正在使用 fread 来执行此操作,但是当我到达文件的最后几个字节时遇到问题。

size_t bytesread=1;

while(bytesread > 0){

bytesread = fread(buffer,16,1,inputfile);
buffer[16]='\0';
fprintf("Read in line: "%s"\n,buffer);

}

例如,我的文本文件是“这是一个测试文件。这里有一些文字”。

它会打印出来

Read in line: "This is a testfi"
Read in line: "le. Here are som"
Read in line: "e words
are som"

我不明白为什么它在阅读最后一行时添加了额外的字符。我知道我正在读取 16 个字节的 block ,但是我该如何处理我只想读取最后 7 个字节的最后一个 block ?

最佳答案

fread(buffer,16,1,inputfile); 尝试读取一个 16 字节的 block 。如果失败,fread 返回零,表示读取了零个完整 block 。

你不想要这个;您想知道读取了多少个字符。因此,请使用以下代码,该代码尝试读取 16 个 block ,每个 block 一个字节:

bytesread = fread(buffer, 1, 16, inputfile);

在此代码之后,bytesread 包含读取的字节数。您可以使用它在读取的最后一个字节之后放置字符串结束标记:

buffer[bytesread] = '\0';

然后 printf("Read in line:\"%s\"\n", buffer); 将打印刚刚读取的字节,不再打印。

关于c - 使用 fread 读取 16 字节 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58251833/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com