je me répond à moi même pour m'excuser ! je suis nouveau et j'ai du faire une bourde !! la réponse n'est pas sur le bon sujet... !
je me répond à moi même pour m'excuser ! je suis nouveau et j'ai du faire une bourde !! la réponse n'est pas sur le bon sujet... !
Non.Envoyé par benhoeil
Si tu ne sais pas, ne dit rien ou vérifie...Je ne sais plus exactement,
Tu dis de grosses bétises...mais il y a d'abord un linefeed, puis un cariage return. quand tu tape entrée sous UNIX, tu rajoute donc 2 caractères !! fait bien attention de lire les deux !
Si tu utilises les fonctions standards et les flux en mode texte, la fin de ligne est '\n' (c'est portable).
Ce qu'il y a réellement dans les fichiers dépend du système.
http://emmanuel-delahaye.developpez....s.htm#fichiers
![]()
oui je viens de vérifier, tu as raison, et au temps pour moi !!!
par contre, j'ai souvenir d'un problème de ce genre.
si j'utilise getc sur stdin (qui est donc une fonction standard) et que je tape "enter" sous dos/win, qu'arrive-t-il ? getc va-t-il me retourner 13 puis 10 ? il me semble que oui. c'est pour ça que j'ai fait la remarque.
Non. Il va retourner '\n' quelque soit le système. C'est garanti par la définition du langage. Des millions de lignes de code comptent là-dessus.Envoyé par benhoeil
Tu confonds avec la façon dont sont marquées les fins de ligne dans les fichiers texte MS-DOS. Mais ça, je l'ai déjà expliqué dans le lien que je t'ai passé.
Oui, je viens de vérifier. je suis assez étonné, le bout de code suivant :
m'affiche sur un fichier édité sous Windows pour chaque "retour à la ligne" :
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 #include <stdio.h> int main(int argc, char **argv) { FILE *fp; int c; fp = fopen(argv[1], "r"); while(!feof(fp)) { c=getc(fp); printf("VALEUR %i %c\n", c, c); } }
-10 sous Win/DOS (alors qu'en fait, c'est bien 10,13)
-10 et 13 sous UNIX
donc, si je comprends, bien que les lignes se termine en 10 puis 13, les functions transforment discrètement en 10. C'est un peu le bordel, mais je suppose que ça assure une portabilité aux codes.
je viens de faire un autre test avant de poster et si j'ouvre le fichier en mode binaire, j'ai bien 10 et 13 à chaque retour à la ligne.
en tout cas merci pour ces précisions.
Euh... normalement, un fichier sous DOS a des fins de lignes en 13 puis 10 (CR-LF), et non en 10 puis 13...
les fonctions de stdio.h ouvrent par défaut en mode texte (les fonctions sans "f" aussi, d'ailleurs), aussi appelé mode transposé: c'est ce mode qui convertit les trois combinaisons possibles (CR (13) pour mac, CR-LF (13-10) pour DOS, 10 (LF ou "NewLine") pour unix) en un même caractère quel que soit la plate-forme.
Par contre, les fonctions de conio.h renvoient le code ASCII correspondant à la touche, et la touche RETURN (entrée) renvoit le code ASCII de CR (13). (en tout cas, c'est ce qui se passe sous DOS)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
en fait la fonction gets() ne suffit pas pour la saisie de chaîne de caractère?
NON.
gets est une fonction qui n'aurait jamais du exister, car elle est la porte ouverte à tous les dépassements de buffer (elle ne permet de spécifier aucune limite)
Il faut TOUJOURS utiliser fgets à la place.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Qu'en pense ton livre de C?Envoyé par Spike Spiegel
http://emmanuel-delahaye.developpez....tes.htm#saisie
http://emmanuel-delahaye.developpez....s.htm#fichiers
Là est le problème: je n'en ai pas encore. Alors, j'essaye de suivre le prof pendant le cours et sachant qu'il va réellement vite, je me retrouve chez moi à essayer de trouver des cours sur le Net. Et biensûr à poser des questions sur ce forum.Envoyé par Emmanuel Delahaye
je compte d'ailleurs m'acheter le livre "référence" enfin il paraît, écrit par Brian W. Kernighan et Dennis M. Ritchie.
En tout cas, le site vers lequel tu me redirige à chaque fois est très bien !![]()
Partager