Je veux insérer et supprimer des caractères au milieu d'un fichier. p>
fopen () et fdopen () permettent simplement d'ajouter à la fin. p>
existe-t-il une méthode simple ou une bibliothèque existante qui permettent ces actions? P>
4 Réponses :
Il n'y a pas de méthode simple. Vous l'avez fait manuellement. Par exemple: p>
Merci! Je dois donc utiliser "fopen (" 1.txt "," w ");" et puis fsek? :) Comme je vous comprends, la réponse est oui pour ma question.
@Infinity: Utilisez fopen ("1.txt", "r +") code> qui s'ouvre pour la lecture et i> écrire. Mode
"W" code> écrase tout fichier qui aurait pu exister précédemment, vous laissant avec un fichier vide.
Je ne comprends pas les étapes 2 et 3. omg que vous voulez dire avec le fichier temporaire? ou tampon?. L'idée que ce que j'ai à l'esprit est d'ajouter la taille en octets de ce que vous souhaitez insérer à la taille des octets de l'origine du fichier. puis écrivez à la
Utilisez Fonction Fsek pour déplacer le pointeur de fichier sur le Emplacement du fichier, puis vous pouvez effectuer une écriture là-bas. Mais, pour cela, vous devez savoir combien d'octets à partir de la fin ou au début du fichier que votre zone préférée pour l'écriture est. P>
Comme d'autres l'ont déjà dit, vous devez le faire manuellement et utiliser Fsek afin d'accéder à la place dans laquelle vous devez insérer ou ajouter des caractères. Vous pouvez facilement ajouter de nouveaux caractères au milieu en procédant comme suit: p>
Si vous souhaitez supprimer des caractères au milieu, cela est plus délicat. En fait, vous ne pouvez pas faire de fichier plus court. Vous avez deux possibilités: dans le premier, vous venez de p>
Dans la deuxième possibilité, vous: p>
point quatre est "délicat", car il n'y a pas de moyen standard (portable) de le faire. Une possibilité est d'utiliser les appels de système de système d'exploitation afin de tronquer le fichier. Une autre possibilité plus simple est de simplement que le fichier sera probablement plus grand qu'il ne devrait le faire, mais cela fera le tour. P>
Merci beaucoup d'homme, je pense que vous en savez plus de choses à ce sujet. Pouvons-nous parler un peu de cela ailleurs?
Je suis intéressé par le sujet de recherche sur la position d'un texte dans un fichier. Peut-être qu'il y a un bon moyen ou dois-je faire tester Charachter par Charachter?
La recherche dans un fichier texte est, oui, essentiellement une matière de test de caractère par caractère. Mais c'est un autre sujet totalement différent: vous pouvez obtenir l'aide d'expressions régulières, par exemple.
Prendre en compte ce que BaltaSarq a affiché, j'ai écrit les lignes suivantes. Vous devez connaître la position où vous souhaitez insérer les caractères
long Fin; long lSize; fseek(fd, 0L, SEEK_END); Fin = ftell(fd);//get the old file size fseek(fd, position, SEEK_SET);//"position" must be declared and initialized char * buffer; lSize = Fin - position;//length from where you want to insert the chars to the eof buffer = (char*) malloc(sizeof(char) * lSize); size_t result = fread(buffer, 1, lSize, fd);//fread (Fin - position) into buffer fseek(fd, position, SEEK_SET);//fseek to position fputs(word, fd);//word is a char pointer that contains the text to be inserted fputs(buffer, fd);//fwrite the buffer
Recommander la création de nouveaux fichiers avec des données insérées. À la fin, renommez et supprimez l'original.