Expliquer moi ce code svp

Résolu/Fermé
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014 - 15 juin 2014 à 15:32
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 juil. 2014 à 23:36
Bonjour,

j'ai trouvé ce code là j'ai pas compris comment il fonctionne
j'ai pas compris la condition de 'while'

expliquez moi svp
et suggerer moi des documentations qui m'aide à comprendre et maitriser ce genre de codage

voici le code :
#include <stdio.h>

static void purger(void)
{
    int c;

    while ((c = getchar()) != '\n' && c != EOF)
    {}
}


je vous remercie infiniment.
A voir également:

3 réponses

aramir Messages postés 939 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 26 décembre 2016 222
15 juin 2014 à 15:42
Bonjour,
Premièrement, pour le c et c++. Ce site est ta bible:
http://www.cplusplus.com/

Si tu y recherches la fonction getchar() tu trouves ca:
http://www.cplusplus.com/reference/cstdio/getchar/?kw=getchar

Donc en gros dans ta boucle là,
(c = getchar())
ca prends un caractère que tu tapes au clavier et ca le met dans la variable c (oui c est un int, mais regardes la fonction getchar() tu vois bien que c'est un int qu'elle renvoit, donc ca colle).

Une fois cette difficulté enlevée tu te retrouves avec une boucle while assez classique. A chaque itération de boucle, getchar met un caractère dans la variable c, et vérifie que ce caractère ne soit pas \n (caractère de retour à la ligne), ou EOF (caratère de fin de fichier)


Pour mieux comprendre tout ça, lit des chapitres/tutos sur les entrées sorties en C/C++. Tout y sera expliqué. Prends ceux là par exemple:
http://www.cplusplus.com/doc/tutorial/basic_io/
http://www.cplusplus.com/doc/tutorial/files/

Bonne journée
1
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
15 juin 2014 à 15:54
je vous remercie
j'ai compris comment elle fonctionne
mais concernant ce cite: http://www.cplusplus.com/
je pense qu'il est fait uniquement pour cpp nn?!
ou se trouve la partie de C ?
0
aramir Messages postés 939 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 26 décembre 2016 222
15 juin 2014 à 18:22
Le C++ est une évolution du C. Donc par rapport aux C il y a des éléments en plus certes, mais le C++ inclut toutes les librairies classiques, méthodes de programmation, etc du C
Donc si tu cherches des informations sur une fonction du C, tu la trouveras aussi sur ce site.
Plus d'informations ici:
http://www.cplusplus.com/reference/clibrary/

En revanche oui il est vrai que la plupart des tutos sont là pour t'apprendre à programmer en C++ donc il risque de t'expliquer certaines choses qui existent en C++. Comme par exemple la "surcharge de fonctions" qui est gérée nativement en C++ alors que en C, il faut bidouiller un code un peu degueu pour réussir à avoir à peu près la même chose.
Géneralement on apprends aux gens à programmer en C pour qu'ils comprennent la "programmation fonctionnelle", et le C++ pour la "programmation orientée objet".

Bref tu trouveras toutes les fonctions du C sur ce site, mais si tu veux des tutos 100% C, oui cherches ailleurs peut être dans un premier temps si tu as peur de te perdre.
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
1 juil. 2014 à 23:01
je vous remerci :)
merc pour votre explication
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
Modifié par fiddy le 1/07/2014 à 23:28
Non...
Le C++ n'est pas une évolution du C... C'est un langage différent. Les normes sont différentes. On peut dire que c'est un cousin, guère plus... Des choses possibles en C ne fonctionneront pas systématiquement en C++.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
1 juil. 2014 à 23:36
Bonjour,

Petite précision par rapport à ce qui a été dit.
static void purger(void)
Cela permet de définir une fonction locale au fichier qui n'accepte aucun argument et ne renvoie rien.

while ((c = getchar()) != '\n' && c != EOF)
{}

On lit le buffer clavier jusqu'à récupérer le caractère '\n' ou EOF. Si le buffer est vide, on attendra qu'il se remplisse : typiquement l'utilisateur pourra taper sur son clavier.
Remarque : Le {} n'est pas très joli est pourrait être remplacé par un simple ';' en fin de while.

Ce code est très utilisé et est la façon standard de purger le buffer clavier. Par exemple, si tu as l'instruction char mot[4]; scanf("%3s", mot); et que l'utilisateur écrit "coucou", il restera des lettres dans le buffer clavier (tampon) qu'il faudra utiliser d'ici le prochain scanf() (ou équivalent).

Cdlt,
1
Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 335
15 juin 2014 à 15:39
Bonjour,

While est un mot anglais... Merci, Goggle trad ;-)

Je ne connais pas grand chose à la programmation mais je n'ai pas eu besoin de cours pour savoir que plusieurs langages l'utilisent et que, en gros, ça veut dire :
- pendant que une condition est vraie
- faire quelque chose
- sinon passer à autre chose

Des détails...
0
asstel Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 14 décembre 2014
15 juin 2014 à 15:43
j'ai pas compris la condition (comment fonctionne cette boucle)
le while je l'ai compris :3
je vous remercie comme meme ^^
0