gpt4 book ai didi

c - 在c中读取二进制文件直到文件末尾

转载 作者:行者123 更新时间:2023-11-30 16:38:36 24 4
gpt4 key购买 nike

我有一个二进制文件,其中包含一些行(我不知道到底有多少行),我想将这些行读入结构体,直到文件末尾,然后在新的 file.txt 中重写这些行。我的问题是:如何从二进制文件读入结构直到文件末尾?它只打印前 11 行。我必须为此分配内存吗?

    struct linien
{
short x1, x2, y1, y2;
unsigned char R, G, B;
};


FILE *fp; // pointer to a file type
FILE *fpa; // pointer to a file type

int counter;
struct linien x; //x is a variable of type struct linien

//open files - one for reading and another one for writing
fp = fopen("\\Linien.pra", "rb");
fpa = fopen("\\Linien.txt", "w");

//check to see if files opened succesfully
if ((fp == NULL)||(fpa == NULL))
{
printf("file failed to open\n");
}

for 循环似乎无法正常工作。

    else
{
for (counter = 0; counter < sizeof(x); counter++) //print and write lines
{
//read the file Linien.pra
fread(&x, sizeof(x), 1, fp);
printf("%2d\t %3d\t %4d\t %5d\t %6d\t %7d %8d\n", x.x1, x.x2, x.y1, x.y2, x.R, x.G, x.B);
//write struct linien to new file Linien.txt
fprintf(fpa, "%2d\t %3d\t %4d\t %5d\t %6d\t %7d %8d\n", x.x1, x.x2, x.y1, x.y2, x.R, x.G, x.B);
}

fclose(fp); // close file
fclose(fpa); // close file
}

最佳答案

您应该检查 fread 的返回值,以便可以在 while 循环中使用 fread,如下所示:

while (fread(&x, sizeof(x), 1, fp) != 0)
{
}

关于c - 在c中读取二进制文件直到文件末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47435688/

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