Forum Clubic

[c++] Ajout dans un fichier

Bonjour,

j’ai un petit soucis pour trouver la méthode correcte à utiliser pour ajouter dans un fichier.

En effet, je suis censé devoir ajouter dans un fichier texte plusieures chaines de caractères appelée élément. La méthode de base pour compter le nombre d’éléments dans le fichier voudrait que l’on compte le nombre de lignes dans le fichier, cependant il y à toutefois un problème par exemple si dans la chaine de caractères on trouve un \n qui provoquerait un retour à la ligne pendant l’écriture du fichier. Vous imaginez facilement les conséquences: nombre d’éléments faussé, récupération de chaque ligne jusqu’à trouver un fin de ligne qui ne devrait pas signifier une fin de fichier.

Le problème est de trouver une solution sure qui me permettrait de pouvoir utiliser l’ajout et la lecture de n’importe quel type d’élément, peu importe le nombre de retour à la ligne (ou autres caractères compromettants).

J’ai pensé à écrire chaque élément entouré d’un séparateur mais c’est toujours le même problème, si l’utilisateur ajoute la même chaine, tout est faussé.

J’ai également pensé écrire le code ascii de chaque caractère au lieu du caractère lui même.

Avez vous une méthode plus correcte pour gérer ce genre de problèmes ?

:bounce:

Oui en gros tu formatte ton fichier. Par exemple, tu fais un mix binaire/texte.

Par exemple, tu te gardes 4 bytes avant chaque chaîne pour indiquer la taille (avec htonl, etc http://www.rt.com/man/htonl.3.html) et tu fous la chaîne après.

Pour la lecture c’est pas compliqué : tu lis 4 bytes, tu les convertis dans le format de ta machine, puis tu lis N (le nombre lu) bytes.

Et comme ça t’as pas de problème de saut de lignes, et tu peux même supporter de l’utf8 !

effectivement, c’est une solution à laquelle j’ai pensé aussi … je pense que je serais forcément obligé de faire ce genre de bricolage…

suffit de me remonter les manches [:thomy]

C’est tout de même le plus simple hein :slight_smile: