il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
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.
korchkidu wrote:
Salut,
il existe apparemment une difference entre les retours a ligne windows
(n) et linux (r), c'est vraiment le cas?
Dans ce cas, si on doit tester un retour a la ligne de maniere portable,
comment faites-vous?
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...
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
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.
VANHULLEBUS Yvan
korchkidu writes:
Salut,
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
Oui, non: c'est n sous UNIX, et rn sous Windows (enfin, certains outils sous windows ne sont pas perturbes par un n).
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
Chercher [r]n....
Soit un n eventuellement precede d'un r.
A +
VANHU.
korchkidu <korch_ki_du@yahoo.fr> writes:
Salut,
il existe apparemment une difference entre les retours a ligne windows
(n) et linux (r), c'est vraiment le cas?
Oui, non: c'est n sous UNIX, et rn sous Windows (enfin, certains
outils sous windows ne sont pas perturbes par un n).
Dans ce cas, si on doit tester un retour a la ligne de maniere
portable, comment faites-vous?
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
Oui, non: c'est n sous UNIX, et rn sous Windows (enfin, certains outils sous windows ne sont pas perturbes par un n).
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
Chercher [r]n....
Soit un n eventuellement precede d'un r.
A +
VANHU.
Targeur fou
korchkidu wrote:
Salut,
Salut,
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
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 <stdio.h> 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.
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
Avec 'n'.
A+ Regis
korchkidu wrote:
Salut,
Salut,
il existe apparemment une difference entre les retours a ligne windows
(n) et linux (r), c'est vraiment le cas?
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 <stdio.h>
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.
Dans ce cas, si on doit tester un retour a la ligne de maniere portable,
comment faites-vous?
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
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 <stdio.h> 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.
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
Avec 'n'.
A+ Regis
Anthony Fleury
Salut,
Salut,
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
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'.
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
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
Salut,
Salut,
il existe apparemment une difference entre les retours a ligne windows
(n) et linux (r), c'est vraiment le cas?
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'.
Dans ce cas, si on doit tester un retour a la ligne de maniere portable,
comment faites-vous?
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.
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
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'.
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
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
Antoine Leca
In news:43c235ef$, korchkidu va escriure:
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
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).
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
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 (<stdio.h>, normalement) de 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
In news:43c235ef$1@epflnews.epfl.ch, korchkidu va escriure:
il existe apparemment une difference entre les retours a ligne windows
(n) et linux (r), c'est vraiment le cas?
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).
Dans ce cas, si on doit tester un retour a la ligne de maniere
portable, comment faites-vous?
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 (<stdio.h>, normalement) de
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.
il existe apparemment une difference entre les retours a ligne windows (n) et linux (r), c'est vraiment le cas?
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).
Dans ce cas, si on doit tester un retour a la ligne de maniere portable, comment faites-vous?
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 (<stdio.h>, normalement) de 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
Antoine Leca
In news:, VANHULLEBUS Yvan va escriure:
korchkidu writes:
Oui, non: c'est n sous UNIX, et rn sous Windows (enfin, certains outils sous windows ne sont pas perturbes par un n).
Non. C'est n sur les deux. Simplement, avec Windows, n s'écrit normalement CR+LF ("