J'essaie de comprendre comment écrire une nouvelle ligne de texte au début d'un fichier (un en-tête). Je sais que je peux ouvrir le fichier, ou chercher au début d'un fichier, mais si j'écris avec cela, il va écraser ce qui est là. Dois-je écrire un nouveau fichier, puis écrire les autres données ligne par ligne, ou y a-t-il un meilleur moyen?Comment puis-je ajouter une nouvelle ligne au début d'un fichier sans écraser les données?
fichier Exemple:
1, 01/01/09, somedata, foo, bar
2, 01/02/09, somedata, foo, bar
3, 01/03/09, somedata, foo, bar
Et je veux finir avec
3, 1-3, 01/04/09
1, 01/01/09, somedata, foo, bar
2, 01/02/09, somedata, foo, bar
3, 01/03/09, somedata, foo, bar
EDIT:
C'est ce que je fini par faire:
FILE *source;
FILE *output;
char buffer[4096];
size_t bytesRead;
memset(buffer, 0, sizeof(buffer);
source = fopen("sourcefile.txt", "r");
output = fopen("output.txt", "w+");
fprintf(output, "my header text\n");
while(!feof(source))
{
bytesRead = fread(&buffer, 1, sizeof(buffer), source);
fwrite(&buffer, 1, bytesRead, output);
}
fprintf(output, "my footer text");
fclose(source);
fclose(output);
remove(source);
rename("output.txt", "source.txt");
Vous devriez vérifier les erreurs sur * fopen *, * fwrite * et * fclose * (ou vérifier la taille du fichier à la fin) avant de considérer l'action réussie, ** puis ** et à la fin * renommer * l'original, puis * renommer * le nouveau, puis * dissocier * l'ancien (à son nom de temp). Sinon, vous avez peut-être perdu des données en silence. – NVRAM