Fichier texte
Fermé
naruto2333
Messages postés
51
Date d'inscription
vendredi 21 mars 2014
Statut
Membre
Dernière intervention
20 janvier 2017
-
9 avril 2014 à 16:39
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 21 avril 2014 à 01:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 21 avril 2014 à 01:48
je manipule un peut les fichier texte sur c et j arrive pas a lire une valeur ou une chaine a partir d une ligne specifique
par exemple si le fichier est ecrit comme suit :
1 // ligne 1
2 // ligne 2
et moi je veut recuperer la valeur 2 dans une variable B par exemple ; moi je trouve pas une bonne methode
par exemple si le fichier est ecrit comme suit :
1 // ligne 1
2 // ligne 2
et moi je veut recuperer la valeur 2 dans une variable B par exemple ; moi je trouve pas une bonne methode
A voir également:
- Fichier texte
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Ouvrir fichier .bin - Guide
1 réponse
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
9 avril 2014 à 20:06
9 avril 2014 à 20:06
Bonjour,
Dans un fichier texte le caractère \n pour saut de ligne est utilisé et sous windows le caractère \r le retour chariot est aussi utilisé il est combiné avec le saut de ligne de cette façon \r\n
Vous pouvez alors passer en revue chaque caractère du fichier en lecture pour déterminer le nombre de ligne en constatant les saut de ligne \n et en ignorant les retour chariot \r
Avec une comparaison un peu comme ça dans une boucle sur le buff de lecture (tout dépend de la façon utilisée pour charger les données du fichier), pour déterminer le nombre de ligne d'un fichier texte :
Si buffdelecture[i] == '\n' alors nombredelignes++
Dans un fichier texte le caractère \n pour saut de ligne est utilisé et sous windows le caractère \r le retour chariot est aussi utilisé il est combiné avec le saut de ligne de cette façon \r\n
Vous pouvez alors passer en revue chaque caractère du fichier en lecture pour déterminer le nombre de ligne en constatant les saut de ligne \n et en ignorant les retour chariot \r
Avec une comparaison un peu comme ça dans une boucle sur le buff de lecture (tout dépend de la façon utilisée pour charger les données du fichier), pour déterminer le nombre de ligne d'un fichier texte :
Si buffdelecture[i] == '\n' alors nombredelignes++
9 avril 2014 à 21:57
Il n'y a pas à les ignorer, lorsque tu liras le fichier, il n'y aura pas de '\r' mais que du '\n'.
Cdlt,
Modifié par Hxyp le 12/04/2014 à 23:31
Admettons que je laisse passer les \r et que je stock mes lignes dans une liste en me basant sur le \n tout seul, à la fin de chaque ligne y aura le méchant \r ; voir au début s'il y a plusieurs \r à la suite ou sont placés n'importe où on ne peut pas le savoir à l'avance mais au moins éviter qu'ils ne tombent à la fin de la ligne car ça remettrait le curseur au début de ligne dans un printf et écraserait les suivantes (pas testé) etc en admettant qu'on veuille par la suite afficher la liste stockant chaque ligne avec les \r non ignorés lors du traitement ; et pour debugger j'imagine que ça doit être vraiment galère de trouver d'où vient le problème enfin c'était pour ça que j'avais rapidement écris que ça dépend de la façon utilisée pour charger les données du fichier, en prévision.
testé en fait ptit bout de code :
On peut voir les 0xd à la fin des lignes lorsqu'on utilise ce type de chargement les ignorer c'est je pense une bonne solution.
12 avril 2014 à 23:42
Après effectivement pour des fichiers binaires, il peut - avoir des un '\r'. Mais je déconseille, surtout quand on commence la lecture binaire sur un fichier texte.
13 avril 2014 à 00:00
Modifié par fiddy le 13/04/2014 à 01:00
Les OS ont différentes façons de stocker du texte. La lecture en mode texte laisse justement le soin à l'OS d'effectuer ses propres conversions. Qui est mieux placé que lui pour faire cette tambouille ? En effet, cela ne se résume pas aux fins de lignes... Si tu veux lire en mode binaire du texte, il faudrait connaître la locale utilisée par le système, l'encodage, etc. Cela devient très vite compliqué, non portable et ne présente guère d'intérêt...
La bonne façon, et ce n'est pas pour rien que les bouquins d'apprentissage, les tutos vont dans ce sens, est de lire avec fgets() ou équivalent un fichier texte. Et pour le reste, il suffit de l'ouvrir en binaire.