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

  FORUM HardWare.fr
  Programmation
  C++

  comprend pô!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comprend pô!

n°335175
peak
Posté le 17-03-2003 à 13:04:57  profilanswer
 

pff :pfff:  
quelqu'un pourrai il m'expliquer comment est il possible que ceci reagisse comme cela!?

Code :
  1. #include <stdlib.h>
  2. int main(){
  3. char c;
  4. char *IP, *res_id;
  5. int Port=14535;
  6. unsigned i;
  7. do{
  8.  printf("\n\t1) Envoyer Fichier\n\t2) Recevoir Fichier\n\t3) Changer Port <%d>\n\t\9) Quitter\n", Port);
  9.  c=getchar();
  10.  if(c == '1'){
  11.   printf("\tConfiguration : \n\t\tIP destination : " );
  12.   IP=malloc(200);
  13.   scanf("%s", IP);
  14.   i=0;
  15.   do{
  16.    printf("\t fichier : " );
  17.    res_id=malloc(500);
  18.    scanf("%s", res_id);
  19.    printf("\n" );
  20.    printf("\n8) retourner au Menu Principal\n" );
  21.    c=getchar();
  22.   }
  23.   while(c != '8' && c != '9' );
  24.  }
  25.  if(c == '2'){
  26.   do{
  27.     printf("\n8) retourner au Menu Principal\n" );
  28.     scanf("%c", &c);
  29.   }
  30.   while(c != '8' && c != '9' );
  31.  }
  32.  if(c== '3'){
  33.   printf("\tConfiguration : \n\t\tPort : " );
  34.   scanf("%d", &Port);
  35.        }
  36. }
  37. while(c!='9');
  38. return EXIT_SUCCESS;
  39. }


Si j'entre 2 au clavier deja y me propose 2fois : "n8) retourner au Menu Principal" alors que d'après moi il n'y a vraiment aucun raison; y me laisse entré mon choise qu' a la deuxième passe???
si j'entre 8 y me reaffiche deux fois le menu de base. Idem : comprend vraiment pas pk!!!??
 

mood
Publicité
Posté le 17-03-2003 à 13:04:57  profilanswer
 

n°335201
umag
deux yeux sinon rien
Posté le 17-03-2003 à 13:22:45  profilanswer
 

Salut !
 
Commences déjà par allouer ta mémoire correctement, c'est à dire une seule fois, par un

Code :
  1. IP=malloc(200);
  2. res_id=malloc(500);


avant de rentrer dans la boucle. Bien sûr, il faut désallouer à la fin avec des "free".
 
Ensuite avec l'utilisation des flux il faut faire gaffe que le flux soit bien vide avant de tenter quoique ce soit... essayes d'utiliser "fflush(stdin)".
 
Enfin, je n'ai pas l'impression que ton algo de gestion des choix du clavier soit pertinent. Ca m'a l'air un peu compliqué, tous ces do/while. Tu veux faire quoi, exactement ?

n°335209
Taz
bisounours-codeur
Posté le 17-03-2003 à 13:28:19  profilanswer
 

le fflush(stdin) n'a aucun effet
 
 
ton rpoblèem, c'est que getchar() lit ds caractères au calvier, y compris '\n' qui est la touche entrée. alros soit tu ignore ce cas, soit tu résout ça en remplacant par un scanf("%c", &c)
 
quand a ta boucle, le cas générique, c'est de l'arretez quand quand getcahr() renvoie EOF
 
sinon, bien pour le EXIT_SUCCESS, bien que ça ne soit pas si victorieux que ça puisque tu ne free pas tes pointeurs
 
il manque un petit #include <stdio.h>

n°335680
peak
Posté le 17-03-2003 à 18:46:22  profilanswer
 

bien vu!! ;)
 
j'ai utilisé fflush(stdin); et ça marche! :)
 
(j'ai compris le truc du \n et ça m'a l'aire d'être la cause mais aparement scanf("%c", &c) pose le même prob par contre si j'utilise scanf("%s", c); que j'initialise char *c=malloc(2); que je remplace tout les c par c[0] : ça marche (ce ki est asez logique après coup puisque mon string sera constitué d'un char et de \n)
 
Merci!

n°335692
Taz
bisounours-codeur
Posté le 17-03-2003 à 19:07:42  profilanswer
 

Peak a écrit :

bien vu!! ;)
j'ai utilisé fflush(stdin); et ça marche! :)

n'importe quoi.... fais une petit recherche sur le forum je t'en supplie

n°335694
nraynaud
lol
Posté le 17-03-2003 à 19:10:33  profilanswer
 

++Taz a écrit :

n'importe quoi.... fais une petit recherche sur le forum je t'en supplie


 
J'ai un peu la flemme de faire la recherche, mais quand le teminal est en mode ligne, ça te flush pas le début de la ligne ?
 
En mode caractère, c'est sûr que ça doit pas trop changer.

n°335730
Taz
bisounours-codeur
Posté le 17-03-2003 à 19:27:29  profilanswer
 

le comportement de fflush sur des flux entrants est absolument indéfini et ne fais absolument rien sur la plupart des systemes: et si ca fonctionne sur votre systeme, soyez sure que ça ne fonctionnera pas ailleurs. c'est le plus gros mythe qui existe en C. pour vider un flux, il faut lire à coup de fgetc .|

n°335746
nraynaud
lol
Posté le 17-03-2003 à 19:35:08  profilanswer
 

++Taz a écrit :

le comportement de fflush sur des flux entrants est absolument indéfini et ne fais absolument rien sur la plupart des systemes: et si ca fonctionne sur votre systeme, soyez sure que ça ne fonctionnera pas ailleurs. c'est le plus gros mythe qui existe en C. pour vider un flux, il faut lire à coup de fgetc .|


 
Merci.
 
Excellent, et nommer la fonction outfflush ou un truc un peu documentaire du genre ça leur serait pas venu à l'idée ?¿?


Message édité par nraynaud le 17-03-2003 à 19:37:31
n°335751
Taz
bisounours-codeur
Posté le 17-03-2003 à 19:40:15  profilanswer
 

non. le fait est que fflush,ça n'a pas de sens sur un flux d'entrée. quand on dit fluser unf lux, on veut dire, finaliser les operations d'ecriturs bufferisés pour assurer la cohérence avec son disuqe dur par exemple. donc onv eut pas dire: coup de baguette magique, fais disparaitre le contenu du buffer. pourtant c'est ce qu'attende les gens quand ils font ça

n°336047
umag
deux yeux sinon rien
Posté le 18-03-2003 à 09:15:02  profilanswer
 

Au temps pour moi, j'avais toujours cru sur parole les gens qui me disaient "met un fflush et ça videra le buffer". Je vérifierais mes sources la prochaine fois.  :jap:


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

  comprend pô!

 

Sujets relatifs
[Erreur de syntaxe] Je ne comprend pas....je ne...comprend pas....C fonction malloc et realloc, je comprend pas tout
execvp - je ne comprend pas tres bienDe gros problème avec le css : je comprend rien
Erreur que je ne comprend pas pq elle est là :| [PHP&SQL][ C++ ] - je comprend pas pkoi ca marche pas
Variable Globale? comprend pas... [RESOLU]Ben là j'comprend pas ce qui se passe ! [FINI]
pb compilation, je comprend pasprob C étrange : programme qui marche et personne ne comprend pourquoi
Plus de sujets relatifs à : comprend pô!


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