Récupération des caractères dans un fichier

Fermé
aly - 13 juin 2013 à 01:40
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 13 juin 2013 à 13:39
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 :
 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:

1 réponse

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
Modifié par [Dal] le 13/06/2013 à 11:30
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
0
Bonjour Dal,
je viens de mettre ce que vous m'avez dit. Enfin, moi je l'ai compris de cette façon.
if(c=='#'{
              if (c!='\n'){
               }
}

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.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 094
13 juin 2013 à 13:39
tu dois utiliser deux variables :

- une pour "conserver" le caractère précédemment lu
- une pour accueillir le caractère actuellement lu


Dal
0