Récupération des caractères dans un fichier
aly
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit soucis dans un projet où je dois développer un préprocesseur. Dans celui ci j'ouvre un fichier exemple toto.txt qui est passé en argument à ma fonction main. Le fichier toto.text contient en exemple:
#include
#define
Je recupère chaque caractère mais je veux poser une condition qui veut dire si le caractére rencontré est un '#' et qu'il soit en début de ligne je recupére ce qui reste dans un tableau.
Concrétement mon probléme est que je ne sais pas comment mettre la condition pour dire si le '#' est e début de ligne.
ce que j'ai fait :
Merci d'avance.
Bien cordialement.
J'ai un petit soucis dans un projet où je dois développer un préprocesseur. Dans celui ci j'ouvre un fichier exemple toto.txt qui est passé en argument à ma fonction main. Le fichier toto.text contient en exemple:
#include
#define
Je recupère chaque caractère mais je veux poser une condition qui veut dire si le caractére rencontré est un '#' et qu'il soit en début de ligne je recupére ce qui reste dans un tableau.
Concrétement mon probléme est que je ne sais pas comment mettre la condition pour dire si le '#' est e début de ligne.
ce que j'ai fait :
char c; if (c== '#'){//je lui dis s'il rencontre un # mais je bloque sur la deuxième condition comment //lui que si ce #est en début de ligne }
Merci d'avance.
Bien cordialement.
A voir également:
- Récupération des caractères dans un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
Salut aly,
Je suppose que tu lis ton fichier caractère par caractère.
Si c'est bien cela, il me semble qu'il suffirait de traiter ainsi ton flux :
- si c'est le 1er caractère que tu lis, et que c'est un '#', il est en début de ligne (en début de la 1ère ligne, même, puisque c'est le tout premier caractère lu)
- autrement, tu vérifies si le caractère que tu lis est '\n' ou '\r' (caractères marquant le retour à la ligne suivant les formats de fichiers texte), si c'est le cas, tu gardes cette information, et si le caractère suivant lu est un '#', tu dois pouvoir en déduire que ce caractère '#' est en début de ligne
Dal
Je suppose que tu lis ton fichier caractère par caractère.
Si c'est bien cela, il me semble qu'il suffirait de traiter ainsi ton flux :
- si c'est le 1er caractère que tu lis, et que c'est un '#', il est en début de ligne (en début de la 1ère ligne, même, puisque c'est le tout premier caractère lu)
- autrement, tu vérifies si le caractère que tu lis est '\n' ou '\r' (caractères marquant le retour à la ligne suivant les formats de fichiers texte), si c'est le cas, tu gardes cette information, et si le caractère suivant lu est un '#', tu dois pouvoir en déduire que ce caractère '#' est en début de ligne
Dal
je viens de mettre ce que vous m'avez dit. Enfin, moi je l'ai compris de cette façon.
Il y a un petit soucis si j'ai un # qui n'est pas en début de ligne il considère comme s'il était en début de ligne. Et c'est ça que je veux pas.comme je vous l'ai dit je doit faire un préprocesseur. Ainsi, toute directive commence par un # qui est en début de ligne suivi après (include, timestamp et etc.).
Bien cordialement.
- une pour "conserver" le caractère précédemment lu
- une pour accueillir le caractère actuellement lu
Dal