bonjour,
j'aurais besoin de savoir si un fichier se termine toujours par \n (10 ou 0a)
aussi, est-ce de même sous windows?
quelqu'un a une idée?
bonjour,
j'aurais besoin de savoir si un fichier se termine toujours par \n (10 ou 0a)
aussi, est-ce de même sous windows?
quelqu'un a une idée?
Bonjour,
non.j'aurais besoin de savoir si un fichier se termine toujours par \n (10 ou 0a)
non.aussi, est-ce de même sous windows?
oui.quelqu'un a une idée?
les fins de fichiers ne sont pas les mêmes sur GNU/Linux, W$, et Mac.
linux \n
windows \r\n
sous windows mon clavier envoie 0x0D 0x0A sous linux peut-être sans doute la même chose
sinon oui fin de fichier = EOF mais jamais travailler avec je peut pas te dire plus je pense pas qu'en parsant un fichier on peut trouver ce code
fait un effort d'expression on comprend rien de ce que tu raconte
Merci pour vos réponse.
j'ai compris que pour mon projet, je devrais utiliser cette expression régulière (pour un automate fini):
le point d'interrogation signifie zéro ou une fois \r
Code : Sélectionner tout - Visualiser dans une fenêtre à part \n(\r)?EOF
je m'explique:
au cas où, avec windows, la dernière ligne du fichier serait /r/n, on peut utiliser l'expression régulière, comme avec Linux:dans le cas où ce serait \n\r, on utiliserais plutôt ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part \nEOF
ce qui, je crois, explique la première de ces 3 expression régulière
Code : Sélectionner tout - Visualiser dans une fenêtre à part \n\rEOF
problème résolu.
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
il s'agit de l'analyseur lexical d'un compilateur:
voici carSuiv():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 bool finFichier::AFD(){ etat=0; reculEchec=0; while(true) switch(etat){ case 0: c=carSuiv(); if(c=='\n') etat=1; else{ echec(); return false; } break; case 1: c=carSuiv(); if(c==EOF) etat=3; else if(c=='\r') etat=2; else{ echec(); return false; } break; case 2: c=carSuiv(); if(c==EOF) etat=3; else echec(); return false; case 3: return true; } }
on peut aussi mettre cette regex dans un programme qui s'appelle lex (sous linux: flex), programme qui construit des analyseurs lexicaux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 char doubleTampon::carSuiv(){ debut=false; if(tampon[enAvant]==EOF){ if(enAvant==STN1){ charger2(); blocs++; enAvant=STN1+1; //+1 car on est dans le deuxième tapon, qui commence // à STN1+1 return tampon[enAvant++]; } else if(enAvant==STN2){ charger1(); blocs++; enAvant=0; return tampon[enAvant++]; } else return EOF; } else return tampon[enAvant++]; }
en clair tu écris un parser lexical en C++ et tu cherches une regex pour matcher s'il y a un saut de ligne à la fin du fichier alors que tu le traites ligne par ligne : ça n'est pas possible
tout ce que tu peux matcher avec une regex c'est la fin de ligne, et il s'agirait alors plutôt de \r?\n (ou \x0d?\x0a, au choix)
détecter la fin du fichier doit être effectué séparément, je te renvoie vers la FAQ locale
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager