Ich möchte eine Struktur in einer Binärdatei überschreiben. Hier ist mein Code :fwrite append selbst der Dateipositionszeiger ist an der richtigen Stelle
struct my_st {
char value[10];
};
void replace(char value[10]){
FILE *fpointer;
fpointer = fopen("data.dat", "rb+");
struct my_st x;
struct my_st new;
new.value="test";
while(1) {
fread(&x,sizeof(x),1,fpointer);
if(strcmp(x.value,value)==0)
break;
}
fwrite(&new,sizeof(x),1,fpointer);
}
ich selbst überprüfen die Stelle der Dateipositionszeiger durch Drucken es Wert ist, bevor fwrite und es war richtig, aber es nur neue Daten am Ende der Datei anhängen und ersetzen nicht.
irgendwelche Vorschläge?
Bitte geben Sie eine [MCVE]. Versuchen Sie, die Struktur zu ersetzen, die zuletzt gelesen wurde? – kaylum
@ Kaylum ja ich bin. – Apoyr
Nun, dann ist Ihr Code eindeutig falsch, weil der letzte 'fread' den Dateizeiger * nach * dieser Struktur in der Datei positioniert. – kaylum