Expliquer moi ce code svp

Résolu
asstel Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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 959 Date d'inscription   Statut Membre Dernière intervention   222
 
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   Statut Membre Dernière intervention  
 
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 959 Date d'inscription   Statut Membre Dernière intervention   222
 
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   Statut Membre Dernière intervention  
 
je vous remerci :)
merc pour votre explication
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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   Statut Contributeur Dernière intervention   1 846
 
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 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 345
 
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   Statut Membre Dernière intervention  
 
j'ai pas compris la condition (comment fonctionne cette boucle)
le while je l'ai compris :3
je vous remercie comme meme ^^
0