bonjour,
comment mettre l'équivalent en C de :
a=getchar();
while(getchar() != '\n');
sans utiliser getchar.
Merci de vos réponses.
Version imprimable
bonjour,
comment mettre l'équivalent en C de :
a=getchar();
while(getchar() != '\n');
sans utiliser getchar.
Merci de vos réponses.
Comment veux tu utiliser une fonctionnalité du langage C sans utiliser une de ses fonctions? ça n'a pas de sens!!!
sans utiliser getchar, comment faire ?
fgetc(stdin)?
Il n'y a pas 36 solutions pour purger le tampon du flux d'entrée standard. Qu'est-ce qui ne te convient pas dans cette solution?Code:
1
2
3
4
5
6
7
8
9
10 int a = fgetc(stdin) if (a != '\n' && a != EOF) { int c; while ((c = fgetc(stdin)) != '\n' && c != EOF) { } }
Thierry
On peut aussi faire:
Mais bon, on utilises encore getchar().Code:
1
2
3 scanf("%*[^\n]"); fgetc(stdin);
Thierry
De toute façon, je ne vois pas où est le problème avec getchar(), il n'y a aucun "pervers" à utiliser cette fonction, elle se comporte très simplement et fais bien ce qu'on lui demande.
scanf avec %c peut également remplacer getchar. En reprenant donc le code de Thierry :
Code:scanf("%*[^\n]%*c");
Si tu ne veux pas de getchar(), tu peux remplacer par la fonction de base fgetc(stdin);
mais on ne sait pas faire plus basique en C standard...
On peut faire plus compliqué, comme
ouCode:
1
2
3
4 char c; scanf("%c", &c);
mais je ne vois pas bien le but de l'opération. Qu'est-ce qui ne va pas avec getchar() ?Code:
1
2
3
4 char c; fscanf(stdin, "%c", &c);
je pense qu'il faut etre claire dans un point, la fonction getchar est l'un des fonction basique du libC, donc en ne peut pas crér une autre fonction qui traite le même fonctionnement avec le code C. par contre on peut utiliser le language ASM peut être !!!!!!!!!
et ceci, seulement pour capter les evenement materiel catcher par le system..... manipulation des registre je pense....
alors voila !!!!:yaisse2:
En tenant compte des remarques de Melem et Emmanuel Delahaye, il suffit donc de faire :
Et on a un getchar personnalisé. :yaisse2:Code:
1
2
3
4
5
6
7
8 #include <stdio.h> char my_getchar(void) { char c; scanf("%c", &c); return c; }
cmoibal, dans ce cas on n'obtient pas un getchar mais plutôt un getch ou un getche ou quelque chose de similaire. En plus pas portable.
Attention, bug! Si il ne reste que '\n' dans le tampon du flux d'entrée standard, ton code ne fait rien et scanf() renvoit la valeur 0. Le tampon n'est pas purgé. Cela fonctionne seulement si d'autres caractères que '\n' sont présents dans le tampon au moment de la purge.
Thierry