gpt4 book ai didi

c - 使用 fread 和 fwrite .. 数据丢失

转载 作者:太空宇宙 更新时间:2023-11-04 05:28:58 28 4
gpt4 key购买 nike

您好,我正在尝试读取一个二进制文件并对其进行处理,但是当我尝试使用 fread 时,我认为我使用 fread 的方式不对。读取的字节数小于文件的大小。任何人都可以帮助我,白色我做错了

    #include <stdio.h>
#include <limits.h>

int main()
{

FILE *fin=fopen("./file.pcap","rb");

char line[LINE_MAX];

FILE *fout=fopen("out.txt","w");

while(fread(line,sizeof(line),1,fin)){
fwrite(&line,sizeof(line),1,fout);
}

fclose(fin);
fclose(fout);

}

第一个文件是51236左右,out.txt是51200

最佳答案

Fread 返回读取的“元素”数。你说过一个元素是 LINE_MAX 字节长,所以当你到达文件末尾时,没有完整的元素,所以 fread() 返回 0并且您的输出最终被截断。

尝试翻转以读取“多个字节”而不是“1 个 LINE_MAX 字节 block ”:

size_t numBlocks;
while((numBlocks = fread(line, 1, sizeof(line), fin)) > 0) {
fwrite(line, 1, numBlocks, fout);
}

关于c - 使用 fread 和 fwrite .. 数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13133746/

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