Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1511 connectés 

  FORUM HardWare.fr
  Programmation

  probleme bizarre en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme bizarre en C

n°65700
magot
Posté le 17-10-2001 à 10:15:38  profilanswer
 

Ce petit bout de programme ne marche pas pouvez vous m'expliquer pourquoi le scanf ne s'execute qu'une fois, apres il met tout seul un retour chariot sans que je ne tape rien!!!
Si vous ne me croyez pas essayez!!!!
 
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
 
 
void main(void)
{
 int test,x;
 
 Cls();
 printf("\nVoulez vous :" );
 printf("\n\t1 - lire un fichier" );
 printf("\n\t2 - saisir des donnees au clavier." );
 printf("\n\t3 - trier les donnees." );
 printf("\n\t4 - ecrire les donnees dans le fichier" );
 printf("\n\t5 - afficher les donnees du tableau" );
 printf("\n\t6 - afficher les donnees du fichier" );
 printf("\n\t7 - quitter le programme\n" );
 while( (test=scanf("%d",&x)) == 0)
 {
  printf("\n veuillez rentrer une valeur correcte\n" );
  test=NULL;
 }
}
 
 
merci d'avance.

mood
Publicité
Posté le 17-10-2001 à 10:15:38  profilanswer
 

n°65702
chrisbk
-
Posté le 17-10-2001 à 10:26:36  profilanswer
 

heuh tu veux tester quoi exactement ?
 
parce que la tu compare le nombre de caractere lu avec 0.....

n°65705
BENB
100% Lux.
Posté le 17-10-2001 à 10:52:22  profilanswer
 

ecrire ce genre de chose c'est chercher les ennuis...
 
while( (test=scanf("%d",&x)) == 0)

n°65865
LetoII
Le dormeur doit se réveiller
Posté le 17-10-2001 à 18:43:42  profilanswer
 

Pas étonant que ça marche pas quand on fait nimporte quoi ;)
Bon tréve de plaisanterie si j'ai bien compris tu essaye de faire un menu mais tu t'y prend comme un pied (désolé mais c un peu ça) déjà ta varible test ne sert à rien, et comparé le résultat de scanf n'as pas vraiment de sens étant donné qu'elle renvoie au mieux EOF en cas de pépin, valeur qui dépend du système, et puis honétement personne ne teste jamais cette valeure de retour (même si c pas bien :) )
 
En gros voilà comment tu devrais faire:
 
#include <stdio.h>  
#include <stdlib.h>  
#include <math.h>  
#include <string.h>  
 
 
void main(void)  
{  
  int ok,x;
 
  ok=0;  
 
  Cls();  
  printf("\nVoulez vous :" );  
  printf("\n\t1 - lire un fichier" );  
  printf("\n\t2 - saisir des donnees au clavier." );  
  printf("\n\t3 - trier les donnees." );  
  printf("\n\t4 - ecrire les donnees dans le fichier" );  
  printf("\n\t5 - afficher les donnees du tableau" );  
  printf("\n\t6 - afficher les donnees du fichier" );  
  printf("\n\t7 - quitter le programme\n" );  
 
  while(!ok)     /*Tant que ok vaut 0 de base le 0 est faut et tout autre valeure est vrai le ! signifie 'not' donc while(!ok) tant que ok faux */
   {
      scanf("%d",&x);
      fflush(stdin) /*vide le buffer d'entrée, plus propre et évite des erreures ultérieures*/
      switch(x)
       {
 
            case 1:   /*fonction à appeler pour traiter le cas 1*/
                      break;
            /* autres case à insérer*/
            case 7:   ok=1;
                      break;
            default:  printf("\n veuillez rentrer une valeur correcte\n" );  
                      break;
       }  
 
}

n°65866
LetoII
Le dormeur doit se réveiller
Posté le 17-10-2001 à 18:43:57  profilanswer
 

Pas étonant que ça marche pas quand on fait nimporte quoi ;)
Bon tréve de plaisanterie si j'ai bien compris tu essaye de faire un menu mais tu t'y prend comme un pied (désolé mais c un peu ça) déjà ta varible test ne sert à rien, et comparé le résultat de scanf n'as pas vraiment de sens étant donné qu'elle renvoie au mieux EOF en cas de pépin, valeur qui dépend du système, et puis honétement personne ne teste jamais cette valeure de retour (même si c pas bien :) )
 
En gros voilà comment tu devrais faire:
 
#include <stdio.h>  
#include <stdlib.h>  
#include <math.h>  
#include <string.h>  
 
 
void main(void)  
{  
  int ok,x;
 
  ok=0;  
 
  Cls();  
  printf("\nVoulez vous :" );  
  printf("\n\t1 - lire un fichier" );  
  printf("\n\t2 - saisir des donnees au clavier." );  
  printf("\n\t3 - trier les donnees." );  
  printf("\n\t4 - ecrire les donnees dans le fichier" );  
  printf("\n\t5 - afficher les donnees du tableau" );  
  printf("\n\t6 - afficher les donnees du fichier" );  
  printf("\n\t7 - quitter le programme\n" );  
 
  while(!ok)     /*Tant que ok vaut 0 de base le 0 est faut et tout autre valeure est vrai le ! signifie 'not' donc while(!ok) tant que ok faux */
   {
      scanf("%d",&x);
      fflush(stdin) /*vide le buffer d'entrée, plus propre et évite des erreures ultérieures*/
      switch(x)
       {
 
            case 1:   /*fonction à appeler pour traiter le cas 1*/
                      break;
            /* autres case à insérer*/
            case 7:   ok=1;
                      break;
            default:  printf("\n veuillez rentrer une valeur correcte\n" );  
                      break;
       }  
 
}

n°65867
LetoII
Le dormeur doit se réveiller
Posté le 17-10-2001 à 18:43:55  profilanswer
 

Pas étonant que ça marche pas quand on fait nimporte quoi ;)
Bon tréve de plaisanterie si j'ai bien compris tu essaye de faire un menu mais tu t'y prend comme un pied (désolé mais c un peu ça) déjà ta varible test ne sert à rien, et comparé le résultat de scanf n'as pas vraiment de sens étant donné qu'elle renvoie au mieux EOF en cas de pépin, valeur qui dépend du système, et puis honétement personne ne teste jamais cette valeure de retour (même si c pas bien :) )
 
En gros voilà comment tu devrais faire:
 
#include <stdio.h>  
#include <stdlib.h>  
#include <math.h>  
#include <string.h>  
 
 
void main(void)  
{  
  int ok,x;
 
  ok=0;  
 
  Cls();  
  printf("\nVoulez vous :" );  
  printf("\n\t1 - lire un fichier" );  
  printf("\n\t2 - saisir des donnees au clavier." );  
  printf("\n\t3 - trier les donnees." );  
  printf("\n\t4 - ecrire les donnees dans le fichier" );  
  printf("\n\t5 - afficher les donnees du tableau" );  
  printf("\n\t6 - afficher les donnees du fichier" );  
  printf("\n\t7 - quitter le programme\n" );  
 
  while(!ok)     /*Tant que ok vaut 0 de base le 0 est faut et tout autre valeure est vrai le ! signifie 'not' donc while(!ok) tant que ok faux */
   {
      scanf("%d",&x);
      fflush(stdin) /*vide le buffer d'entrée, plus propre et évite des erreures ultérieures*/
      switch(x)
       {
 
            case 1:   /*fonction à appeler pour traiter le cas 1*/
                      break;
            /* autres case à insérer*/
            case 7:   ok=1;
                      break;
            default:  printf("\n veuillez rentrer une valeur correcte\n" );  
                      break;
       }  
 
}

n°65870
LetoII
Le dormeur doit se réveiller
Posté le 17-10-2001 à 18:56:30  profilanswer
 

Désolé pour les trois messages: un petit problème au moment de l'envoie.
 
PS: J'ai oublié une acolade dans le code

n°65923
nikewlas
Posté le 18-10-2001 à 00:05:37  profilanswer
 

si tu tiens à garder ta variable test, tu peux utiliser la fonction getchar().
 
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
 
 
void main(void)
{
int test,x;
 
Cls();
printf("\nVoulez vous :" );
printf("\n\t1 - lire un fichier" );
printf("\n\t2 - saisir des donnees au clavier." );
printf("\n\t3 - trier les donnees." );
printf("\n\t4 - ecrire les donnees dans le fichier" );
printf("\n\t5 - afficher les donnees du tableau" );
printf("\n\t6 - afficher les donnees du fichier" );
printf("\n\t7 - quitter le programme\n" );
while( (test=getchar()) == '0';)
{
 printf("\n veuillez rentrer une valeur correcte\n" );
 test=NULL;
}
/*là tu mets le switch*/
}

n°65924
nikewlas
Posté le 18-10-2001 à 00:07:34  profilanswer
 

tant que j' y suis, faut penser à virer test=NULL

n°66011
magot
Posté le 18-10-2001 à 11:28:21  profilanswer
 

En reponse a leto2 il faudrait peut etre mettre les printf dans la boucle!!!

mood
Publicité
Posté le 18-10-2001 à 11:28:21  profilanswer
 

n°66202
LetoII
Le dormeur doit se réveiller
Posté le 18-10-2001 à 21:01:33  profilanswer
 

Ouai enfin ça c toi qui voit comment tu veux faire et quel aspect tu veux donner à ton menu (si tu met les printf dans la boucle met aussi le cls sinon ça va pas être joli ;) )

n°66203
magot
Posté le 18-10-2001 à 21:03:22  profilanswer
 

merci

n°66204
LetoII
Le dormeur doit se réveiller
Posté le 18-10-2001 à 21:03:47  profilanswer
 

Pour répondre à la solution de nikewlas si l'utilisateur rentre un nombre supperieur à 7 ça va sortir de la boucle et passer dans les tests switch et je pense pas que ça cole à ce que veut faire magot


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  probleme bizarre en C

 

Sujets relatifs
[Pascal] problème de nombres ... ???[Access] problème de runtime
probleme d' ASP...please help Urgent!!!!![MFC] Problème de rafraichissement d'une CView et CWinApp:OnIdle
Problème accents : conversion BDD DBASE en MYSQL[PHP] Setcookie et header("location:...") Problème???????
[phpBB] Ben oui, j'ai un probléme.......[Delphi] Problème avec winsock (pour un chat)
[Visual C++ 6] Problème de Chargementprobleme avec SQL Server 2000 et SP1
Plus de sujets relatifs à : probleme bizarre en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR