Retour a la ligne Windows/Linux
Le
korchkidu

Salut,
il existe apparemment une difference entre les retours a ligne windows
() et linux (), c'est vraiment le cas?
Dans ce cas, si on doit tester un retour a la ligne de maniere portable,
comment faites-vous?
Merci,
K.
il existe apparemment une difference entre les retours a ligne windows
() et linux (), c'est vraiment le cas?
Dans ce cas, si on doit tester un retour a la ligne de maniere portable,
comment faites-vous?
Merci,
K.
Je precise que oui, je sais que l'on peut tester les 2 mais je doute
juste de cette histoire de difference entre les retours a la ligne
Windows/Linux d'ou ma question...
K.
Oui, non: c'est n sous UNIX, et rn sous Windows (enfin, certains
outils sous windows ne sont pas perturbes par un n).
Chercher [r]n....
Soit un n eventuellement precede d'un r.
A +
VANHU.
Salut,
Du point de vue C, 'n' sont tous deux des caractères de séquences
d'échappement. 'n' (new line, nouvelle ligne) permet d'aller à de la
position courante à la position initiale de la ligne suivante et 'r'
(carriage return, retour chariot) permet d'aller de la position
courante à la position initiale de la ligne courante (même ligne).
e.g:
#include int main(void)
{
printf("kaoc'h ki gwenn ha");
#ifdef NEWLINE
printf("n");/* On doit passer à la ligne suivante */
#else
printf("r"); /* On doit écraser la ligne, réécrire par dessus en
somme */
#endif
printf("kaoc'h ki du");
fflush(stdout);
return 0;
}
A ne pas confondre avec les caractères de contrôles qui permettent de
terminer une ligne sur les systèmes :
CR (Carriage Return) sous Mac
LF (Line Feed) sous Unix
CR + LF sous Windows
Le 'n' du C sur ces systèmes correspond au caractère de contrôle
correspondant ci-dessus. Quant au 'r', il correspond à ce qui permet
d'effectuer un retour chariot tel que le définit le C avec les
caractères de contrôles du système adéquats.
Avec 'n'.
A+
Regis
Salut,
Il y a bien une différence entre les deux, mais pas celle-ci.
Les unix en général (dont linux) utilisent 'n', alors que Windows
utilise 'rn'. Il y a aussi mac os qui utilise (ou utilisait au moins)
'r'.
Ca dépend... Tout ceci, c'est de la cuisine interne. En fait, le retour
chariot pour un fichier texte sera converti en la bonne valeur (mettre
'n' sous windows, le compilateur le transformera en 'rn' pour que la
fin de ligne soit bien faite.
Si c'est pour tester la fin de ligne sur un terminal, alors pas de
problème, on recherche n. De même lorsque l'on lit une ligne dans un
fichier, la fin de ligne, quelque soit l'OS, sera à ma connaissance
transformée en n si elle est conservée (comme avec fgets()). Le langage
C ne voit qu'un seul caractère de fin de ligne, qui est toujours 'n'.
Si c'est pour tester la fin de ligne dans des fichiers texte ouverts en
binaire, alors il faut rechercher différentes séquences, soit n, soit
rn, soit r soit nr (sur de très vieux systèmes il me semble que ca
a existé...). Mais de toute facon, à ma connaissance, sur un fichier
texte, rechercher la première occurence de r ou de n suffit amplement.
Ces deux caractères ne devraient apparaitre nul part autre.
--
Anthony Fleury
Non.
Dans les deux cas, n indique une fin de ligne (c'est ce que tu dois
utiliser) et r est un caractère de contrôle qui demande un retour en début
de ligne (utilisation très particulière, compliquée par le fait que ce
caractère peut changer de code entre les machines).
Utilise n, partout et tout le temps.
Oublie r (sauf si tu veux faire de la surfrappe, et encore, c'est sûrement
mieux avec b).
Si tu trouves un cas où ce n'est pas le comportement que tu veux, tu vas
finir par être obligé de descendre d'un niveau et manipuler CR ( 15) et
LF/NL ( 12)... ce qui va forcément limiter la portabilité de ton programme,
ou alors le compliquer démesurement. Dans un cas comme cela, il est beaucoup
plus simple de demander à la couche inférieure ( faire le boulot, car elle dépend de la machine, donc va gérer correctement
les différents cas.
Bien sûr, cela suppose de manipler les FILE comme il faut, et donc en
particulier d'ouvrir avec le mode "b" les fichiers binaires, et sans "b" les
fichiers textes, et de ne PAS s'attendre à ce qu'ils soient identiques : un
fichier texte est constitué de lignes, terminées par n; un fichier binaire
est constitué de bytes.
Antoine
Non. C'est n sur les deux. Simplement, avec Windows, n s'écrit normalement
CR+LF ("