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

 


Dernière réponse
Sujet : probleme bizarre en C
LetoII 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
LetoII 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
magot merci
LetoII 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 ;) )
magot En reponse a leto2 il faudrait peut etre mettre les printf dans la boucle!!!
nikewlas tant que j' y suis, faut penser à virer test=NULL
nikewlas 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*/
}
LetoII Désolé pour les trois messages: un petit problème au moment de l'envoie.
 
PS: J'ai oublié une acolade dans le code
LetoII 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;
       }  
 
}
LetoII 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;
       }  
 
}
LetoII 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;
       }  
 
}
BENB ecrire ce genre de chose c'est chercher les ennuis...
 
while( (test=scanf("%d",&x)) == 0)
chrisbk heuh tu veux tester quoi exactement ?
 
parce que la tu compare le nombre de caractere lu avec 0.....
magot 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.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)