TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 | |||
| Pseudo | Commentaire | ||
|---|---|---|---|
| Page : 1 | |||
Octal
|
# Posté le 24/09/2006 à 13:13:06 - Ce membre a mis la note : 18 | ||
Dance 4 life § ![]() ![]() |
Salut à toi. Ce tutoriel était en effet manquant et bon nombre de personnes posait des questions sur l'utilisation de fgets. C'était une très bonne idée que de rédiger ce tuto afin d'éclaircir tout ça. Je tiens donc à te féliciter
Tutoriels langage C :
|
||
rushia
|
# Posté le 25/09/2006 à 13:12:27 - Ce membre a mis la note : 20 | ||
![]() Groupe : Membres |
Ce tuto va beaucoup plaire à -ed- qui se tue à dire à tout le monde qu'il faut utiliser fgets.
20/20 |
||
0v3rb1t
|
# Posté le 28/09/2006 à 20:38:14 - Ce membre a mis la note : 20 | ||
|
C et C++, pas C/C++ Groupe : Bannis |
MERCI BEAUCOUPS!!!
scanf() c'était très limité, maintenant avec fgets() finis les erreurs médeuses!
je vais pouvoir faire mon formulaire v2.0 note 20/20!!! SMART_TELNET(projet à reprendre) [C]Tutoriel ANSI [C]Bien programmer en C -ed- [C]Développez [C]Wikibooks [C]Sockets [C-python]GTK+ [C-algo]France-IOI [C]Algorithmique |
||
-ed-
|
# Posté le 18/10/2006 à 00:24:49 - Ce membre a mis la note : 19 | ||
C is a sharp tool![]() Groupe : Membres |
Content de voir que mes petits conseils portent leurs fruits...
Du beau boulot qui va en sauver plus d'un. Emmanuel Delahaye. Non à la pub sur l'alcool sur Internet. Des infos sur la programmation et le langage C: http://bien-programmer.blogspot.com/ http://mapage.noos.fr/emdel/ ![]() |
||
Sanco95
|
# Posté le 28/10/2006 à 18:25:42 - Ce membre a mis la note : 20 | ||
C![]() Groupe : Membres |
Très intéressant, c'est vrai que cette méthode nous manquait à tous.
Merci ! |
||
fubu33
|
# Posté le 08/01/2007 à 19:56:18 - Ce membre a mis la note : 18 | ||
|
Groupe : Membres |
Ahlalala ! ça fait la troisième fois que je lis ce tuto et que je ne comprend rien !
En fait scanf() pose problème seulement avec les chaines ?
Ou fgets() est vraiment mieux ? Il faut obligatoirement les 2 fonctions clean() et purger() pour que fgets() fonctionne correctement ?
bref je comprends quedal et j'aimerai quand même réussir a me servir de fgets(). Vous pouvez m'aider un peu svp ? |
||
Kr00pS
|
# Posté le 09/01/2007 à 18:40:58 - Ce membre n'a pas mis de note | ||
Trashed and Lost![]() Groupe : Membres |
scanf() est conçu pour lire des donneés sur l'entrée standard (stdin) mais toute les fonctions à base de *scanf() posent problème, oui.
Oui, fgets() est plus robuste pour lire des données (dans un fichier ou sur l'entrée principale). Pour nettoyer les traces de fgets(), il faut un petite intervention donc oui. Si tu as un soucis, poste sur le forum.
|
||
fubu33
|
# Posté le 10/01/2007 à 12:47:35 - Ce membre a mis la note : 18 | ||
|
Groupe : Membres |
Je commence à comprendre, j'ai lu sur internet que scanf() est l'une des plus dur fonctions à maitriser en C
En fait ce que je ne comprend pas c'est les flux d'entrée et de sortie ? Si j'ai bien compris le flux d'entrée c'est stdin ? Donc si on fait plusieur fgets() à la suite il faut vider stdin ? Le réel problème que je rentontre avec scanf() c'est justement quand j'en fais plusieurs, le premier passe mais le deuxième est sauté et c'est seulement le troisième qui passe, le quatrième est sauté...etc |
||
Kr00pS
|
# Posté le 10/01/2007 à 14:13:17 - Ce membre n'a pas mis de note | ||
Trashed and Lost![]() Groupe : Membres |
Même avec scanf() on doit nettoyer le flux d'entrée (stdin, oui) pour faire plusieurs saisies.
La fonction purge sert à vider le buffer. Il y a bien la fonction flush(stdin) mais elle provoque un comportement indéfinie (très grave). Tout est expliqué dans le tutorial.
|
||
fubu33
|
# Posté le 10/01/2007 à 14:30:42 - Ce membre a mis la note : 18 | ||
|
Groupe : Membres |
J'ai enfin compris !
ouf enfin, en fait je captais pas comment saisir seulement UN caractère avec fgets()
J'ai relu ton tuto mais je compenais toujours pas, donc j'ai un peu chercher sur internet comment faire et je suis tombé sur le tuto d'un autre zéro sur le même sujet sauf que pour saisir UN caractère il utilise getchar() au lieu de fgets() donc maintenant j'utilise getchar() et fgets() adieu scanf() !
merci
Je met une note de 18/20
|
||
SpotZup
|
# Posté le 17/02/2007 à 23:52:28 - Ce membre a mis la note : 17 | ||
Ceci est un panda![]() Groupe : Membres |
Salut, super tuto ! Mais j'ai encore une question, à quoi ça sert de vérifier que getchar() est différent de EOF quand on purge, puisque stdin est forcément terminé par \n ? Enfin je suppose que c'est ça mais je sais pas, j'aimerai donc quelques précisions là dessus.
Parce que sinon on pourrait vachement simplifier la fonction clean: Code : C void clean(char* chaine)
{ char *pointeur = strchr(chaine, '\n'); if (pointeur) *pointeur = NULL; else while(getchar() != '\n'); } Chez moi ça marche, donc dans quel cas getchar peut-il valoir EOF sans valoir \n ? <edit> Et puis, ne pourrait-on pas remplacer complètement la fonction purger() par fflush(stdin) ? ----------= Diviser pour Régner =------------ >> ActionScripteur de 3ème génération << |
||
Kr00pS
|
# Posté le 19/02/2007 à 13:16:37 - Ce membre n'a pas mis de note | ||
Trashed and Lost![]() Groupe : Membres |
Citation : Pas de titre Mais j'ai encore une question, à quoi ça sert de vérifier que getchar() est différent de EOF quand on purge, puisque stdin est forcément terminé par \n ? Enfin je suppose que c'est ça mais je sais pas, j'aimerai donc quelques précisions là dessus. getchar() lit tous les caractères jusqu'a la fin du fichier (stdin), donc on est sûr que tout soit lu.
Citation : Pas de titre Parce que sinon on pourrait vachement simplifier la fonction clean: Ce sont juste des lignes enlevées, l'algorithme est le même donc pas de simplication.
Citation : Pas de titre <edit> Et puis, ne pourrait-on pas remplacer complètement la fonction purger() par fflush(stdin) ? Comportement indéfini, c'est un truc à pas faire :).
|
||
Idefix57
|
# Posté le 14/03/2007 à 12:04:33 - Ce membre a mis la note : 20 | ||
![]() Groupe : Membres |
C'est super , autre chose que 'scanf' ca fait du bien Merci .
et longue vie au site des ZérOs . |
||
Altarias
|
# Posté le 08/05/2007 à 18:41:42 - Ce membre a mis la note : 17 | ||
|
Groupe : Membres |
Vraiment pas mal du tout ça m'a appris à (bien) utiliser fgets . Maintenant j'ai une question, est-ce que la fonction faites que j'ai faite répond aussi au problème de scanf sans utiliser de fonction clean ou purger.. (au moins pour les chaines de caractere).
Code : C void LireChaine (char tableau[])
{ int caractere; int i=0, c; do { caractere = getchar (); tableau[i] = caractere; if (i>=TAILLE_MAX) { printf("Erreur: Chaine entrée trop grande"); exit(1); } i++; } while (caractere != '\n'); i--; tableau[i]='\0'; } Bon on peut remplacer le define TAILLE_MAX par un sizeof(chaine) en argument de la fonction mais c'est pas le problème
Ah mais j'en oubliais la note
Secret (cliquez pour afficher) 17/20 |
||
Yourbule
|
# Posté le 12/05/2007 à 09:04:57 - Ce membre a mis la note : 20 | ||
![]() Groupe : Membres |
Très bon tuto .
Note : Secret (cliquez pour afficher) 20/20 k3v1n for ever jtm donc ça va |
||
Botman
|
# Posté le 12/06/2007 à 16:47:36 - Ce membre a mis la note : 17 | ||
|
Groupe : Membres |
Bonjour à tous !
J'aurais une petite question : dans le tuto, on ne voit des exemples qu'avec des phrases et il n'y a pas d'exemples avec des nombres ! Et j'aimerais donc savoir si cela beug si le programme attend un nombre et que l'user rentre une phrase !?
Sinon très bon tuto : 17/20 !
Merci d'avance !
Tousse pour un, rhume pour tous !!! J'envie les rivières : elles peuvent suivre leur cours tout en restant dans leur lit !!! |
||
Simgurdil
|
# Posté le 07/07/2007 à 09:09:24 - Ce membre a mis la note : 20 | ||
Mobilis in Mobile![]() Groupe : Membres |
Excellent tuto
20/20
|
||
spontex
|
# Posté le 05/08/2007 à 19:53:58 - Ce membre a mis la note : 19 | ||
Do I look like a human ?![]() Groupe : Membres |
Ce tuto est vraiment utile et érradique de nombreux bugs de nos programmes.
Secret (cliquez pour afficher) 19/20
La perfection n'existe pas ![]() Mon projet : Un big jeu de bourrin ou il faut tirer sur tout ce qui bouge. Avancement de la démo : ■■■■■■■■■■■■■■■■■■■■ 52% _____________________________________________________________________ NE PAS cliquer ici. |
||
Yfle
|
# Posté le 15/01/2008 à 18:43:12 - Ce membre a mis la note : 17 | ||
Visse ta vie![]() Groupe : Membres |
Très bon! Mais j'ai une petite question. Pourquoi utilise la fonction strchr? Utilise ça: Code : C - Afficher / masquer les numéros de ligne
un tuto super et indispensable =D je voulais depuis longtemps pouvoir demander une chaine où l'on puisse écrire un espace dedans. c'est maintenant chose faite! Allez, ça vaut bien un 17/20 ![]() EDIT: je ne sais pas si ma technique est plus rapide... B8 07 0E CD 10 C3 // J'aime l'assembleur, et alors? Lauréat d'un concours littéraire! Pour tous ceux qui aime écrire, participez à l'édition du Prix Clara 2009! |
||
aj94tj
|
# Posté le 23/01/2008 à 12:25:15 - Ce membre a mis la note : 17 | ||
![]() Groupe : Membres |
Bien sympa ce tutoriel.Il m'a bien debloqué dans mes projets !
![]() ![]() ![]() |
||
SylafrsOne
|
# Posté le 25/01/2008 à 15:15:29 - Ce membre a mis la note : 18 | ||
![]() Groupe : Membres |
gros probleme : lorsque j'utilise fgets(chaine, sizeof chaine, stdin); dans une fonction... ex : Code : C - Afficher / masquer les numéros de ligne
et bien il me rend que les trois premier caracteres: ex: Code : Console - Afficher / masquer les numéros de ligne tapez une phrase :
123456789
Vous avez tapé '123'
Press ENTER to continue
Bien-sur cela n'arrive pas dans le main, bref, j'ai vraiment besoin d'aide... Sinon je te met un 18 comme meme |
||
Plexi 00
|
# Posté le 06/05/2008 à 13:13:51 - Ce membre a mis la note : 18 | ||
Just do it!!![]() Groupe : Membres |
Salut! J'étais contente de tomber sur ton tuto, juste quand j'en avais besoin! Pour la note je te mets un petit 18 Merci encore... Txus. |
||
AsM0DeUz
|
# Posté le 11/07/2008 à 12:19:47 - Ce membre a mis la note : 16 | ||
|
Groupe : Membres |
Citation : SylafrsOne gros probleme : lorsque j'utilise fgets(chaine, sizeof chaine, stdin); dans une fonction... Ton probleme ne vient pas de la fonction de fgets mais plutot de l'appel a la fonction blabla, tu dois également passer la taille du tableau à la fonction. Par ex : Code : C
Voila
|
||
rik76
|
# Posté le 08/10/2008 à 09:02:06 - Ce membre n'a pas mis de note | ||
|
Groupe : Membres |
bonjour, juste 2 remarques : 1) si l'on souhaite entrer un nombre et donc convertir la chaine, il faut vérifier que les caractères entrés soient bien compris entre 48 et 57. En effet, si le premier caractère n'est pas valide sscanf renvoie 0, par contre si c'est le second(ou autre) il renverra 1 mais le nombre sera tronqué à partir du caractère non valide. Ex : on entre "a1" : sscanf renvoie 0, on refait la saisie on entre "1a" : sscanf renvoie 1, et le nombre vaut 1 en sortie 2) j'utilisais scanf("%d/%d/%d",&jour,&mois,&annee); pour entrer une date et voulais utiliser fgets : voilà le code utilisé, basé sur le tuto, pour entrer une date sur une seule ligne sous la forme jj mm aaaa : Code : C
Merci de tester et de transmettre vos critiques et remarques. |
||
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
86 Zéros connectés |
8 requêtes |
0.0538s (0.0427s)
