Pages : 1
#1 Le 08/04/2008, à 15:52
- wardi
problem en programmation c
Bonjour,
ce ci est un exemple de programme , compilateur Geany sous linux ubuntu 7.10 :
#include <stdio.h>
int main(void)
{
char ca;
do {
ca=getchar();
if(ca!='a') {
printf("erreur");
}
}while(ca!='a');
return 0;
}
l'affichage est le suivas lors du saisie un car != de 'a';
"erreurerreur"
.
j'explique :
le progame affiche le message "erreur" lors de la premiere saisie d'un caractaire != de 'a' puis il reboucle et affiche un 2eme message "erreur" sans attendre une saisie par le clavier ....
aucune idee pour quoi !!!!
a vous ! merci
#2 Le 08/04/2008, à 16:37
- rniamo
Re : problem en programmation c
#include <stdio.h>
int main(void)
{
char ca;
do {
ca=getchar();
if(ca!='a' && ca!='\n')
{
printf("erreur\n");
}
}while(ca!='a');
return 0;
}
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#3 Le 08/04/2008, à 16:39
- nicolas.sitbon
Re : problem en programmation c
Bonjour,
ce ci est un exemple de programme , compilateur Geany sous linux ubuntu 7.10 :
Geany n'est pas un compilateur mais un éditeur de texte.
Pense à utiliser la balise Code.
#include <stdio.h>
int main (void)
{
char ca;
do
{
ca = getchar ();
if (ca != 'a')
{
printf ("erreur");
}
}while (ca != 'a');
return 0;
}
l'affichage est le suivas lors du saisie un car != de 'a';
erreurerreur
C'est du français ça?
j'explique :
le progame affiche le message "erreur" lors de la premiere saisie d'un caractaire != de 'a' puis il reboucle et affiche un 2eme message "erreur" sans attendre une saisie par le clavier ....
aucune idee pour quoi !!!!
a vous ! merci
Oui c'est un comportement normal, puisque tu appuies sur 2 touches : le caractère + Entrée, donc il faut retirer Entrée du buffer.
#include <stdio.h>
int main (void)
{
char ca;
int tmp;
do
{
ca = getchar ();
while (tmp = getchar () != '\n' && tmp != EOF);
if (ca != 'a')
{
printf ("erreur");
}
}while (ca != 'a');
return 0;
}
ou
#include <stdio.h>
int main (void)
{
char ca;
int tmp;
do
{
ca = getchar ();
scanf ("%*[^\n]"), getchar ();
if (ca != 'a')
{
printf ("erreur");
}
}while (ca != 'a');
return 0;
}
Cordialement.
Hors ligne
#4 Le 08/04/2008, à 17:30
- wardi
Re : problem en programmation c
Merci bien sa fonctionne , mais je ve utiliser flashall() dans cetain programmes ,le probleme est que flashall() n'est pas reconnue dans stdio.h , Des suggession????
#5 Le 08/04/2008, à 17:39
- nicolas.sitbon
Re : problem en programmation c
Je t'ai montré les 2 manières standards et portable pour vider le buffer.
flashall() inconnu au bataillon et certainement pas standard ni portable.
Hors ligne
#6 Le 08/04/2008, à 17:43
- wardi
Re : problem en programmation c
Je t'ai montré les 2 manières standards et portable pour vider le buffer.
flashall() inconnu au bataillon et certainement pas standard ni portable.
merci bien c'est tres gentille de vous ,
#7 Le 08/04/2008, à 18:20
- MCMic
Re : problem en programmation c
wardi a écrit :Bonjour,
ce ci est un exemple de programme , compilateur Geany sous linux ubuntu 7.10 :Geany n'est pas un compilateur mais un éditeur de texte.
certes, mais il propose effectivement un bouton compiler qu'il lance une commande (personnalisable) en fonction du nom du fichier. (perso en général j'indique le chemin du makefile à ce bouton)
Hors ligne
#8 Le 08/04/2008, à 19:07
- LittleWhite
Re : problem en programmation c
Moi dans le genre je connait que fflush
a utiliser :
fflush(stdout);
pour cette fois
mais je ne pense pas que cela serve
Linux ou mourir
Pour avoir des problemes : demarrer Windows
Script de compression multi archive : http://forum.ubuntu-fr.org/viewtopic.php?id=225297
Hors ligne
#9 Le 08/04/2008, à 19:19
- nicolas.sitbon
Re : problem en programmation c
Non cela ne sert à rien dans ce cas
Hors ligne
#10 Le 08/04/2008, à 22:45
- LittleWhite
Re : problem en programmation c
oui c'est bien ce que je me disais mais comme on parlait d'un truc comme flashall ( que je ne connait pas ) je me suis dit qu'il y avait peut etre un rapprochement à faire.
Linux ou mourir
Pour avoir des problemes : demarrer Windows
Script de compression multi archive : http://forum.ubuntu-fr.org/viewtopic.php?id=225297
Hors ligne
#11 Le 09/04/2008, à 08:23
- Karl_le_rouge
Re : problem en programmation c
fflush sert uniquement à vider le buffer de sortie (stdout) et en aucun cas le buffer d'entrée (stdin) -ce n'est pas prévu par le standard ANSI- comme le souhaite l'ami.
Hors ligne
#12 Le 09/04/2008, à 12:41
- wardi
Re : problem en programmation c
Bonjour,
j'ai teste aussi de fair un getchar() avant la fonction saisie , getchar() pourrait absorber le retour chariot de la saisie precedente
mais ce n'est pas toujour efficace....
Pages : 1