Ich habe eine Binärdatei mit einigen Zeilen hinein (ich weiß nicht, wie viel genau) und ich möchte diese Zeilen in der Struktur bis zum Ende der Datei lesen und dann neu schreiben Diese Zeilen in neue file.txt. Meine Frage ist: Wie kann ich von Binärdatei in Struktur bis zum Ende der Datei lesen? Es druckt nur die ersten 11 Zeilen. Muss ich Speicher für diese oder etw. Zuweisen?lesen binäre Datei in c bis zum Ende der Datei
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");
}
die for-Schleife scheint nicht korrekt zu funktionieren.
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
}
_Ich habe eine Binärdatei mit ein paar Zeilen drin: das klingt etwas widersprüchlich. Eine Textdatei hat Zeilen, eine Binärdatei nicht. Jetzt sieht Ihr Code mehr oder weniger korrekt aus, möglicherweise liegt das Problem daran, dass die Strukturen in der Datei wegen der Auffüllung nicht mit der Struktur "struct linien" übereinstimmen. Wir können nicht ohne weitere Informationen sagen. Wie entsteht die Linien.pra? –
'x' wird nie initialisiert, bitte posten Sie einen [MCVE] – purplepsycho
Sie überprüfen nicht den Rückgabewert von fopen oder fread. – stark