fseek
kann also nicht wieder durch ein oder zwei Linien? Könnten Sie mir ein einfaches Beispiel geben
fp= fopen("liste.txt", "r"); // this is where i have list of names and ages and and ...
new_fp=fopen("sec_list.txt","w");// this is where i will stock new infos
do {
fgets(ligne, 100, fp);
if (strcmp(tel, ligne)!=0) // if "Tel" isnt the same content as "Ligne"
{
fputs(ligne, new_adherent);
}
else {
printf("\n the adherent is founded \n");
fseek (fp, -124, -4);// back by 124 caractere and 4 lines or something like that
do{
ch = fgetc(fp);
if(ch == '\n'){
lines++;
}
}while (lines<7);
printf("\n\t DELETED \n");
}
}while(!feof(fp));
fclose(fp);
fclose(new_fp);
remove("liste.txt");
rename("new_liste.txt", "liste.txt");
Können Sie Ihren Code zeigen und genau erklären, was nicht funktioniert hat? – Marievi
'fseek' wirkt sich nur auf die Ansicht der Bibliothek aus, wo der nächste Speicherort der Datei zu lesen/schreiben ist. Dies wirkt sich nicht auf die Ausgabe aus, die bereits auf dem Bildschirm angezeigt wird. Sie können '' \ '' ausdrucken, um bereits geschriebene Zeichen zu löschen. Wenn Sie jedoch den Anfang einer Zeile lesen, gibt es keine Garantie, dass die Zeichen in der vorherigen Zeile weiterhin gelöscht werden. Um das zu tun, was Sie benötigen, benötigen Sie Fähigkeiten, die über die Standardbibliothek hinausgehen (z. B. sollten Sie sich mit 'Curses' beschäftigen). –