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

  FORUM HardWare.fr
  Programmation
  C++

  [ C - Gros debutant ]Probleme de scanf

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ C - Gros debutant ]Probleme de scanf

n°274477
tabasc0
Posté le 21-12-2002 à 17:13:08  profilanswer
 

ca c mon programme :  
#include <stdio.h>
main()
{
 double a;
 double b;
 printf("saisissez un nombre : " );
 fflush(stdin);
 scanf("%d",a);
}
 
et le debogueur de me dit ca :  
warning C4101: 'b' : unreferenced local variable
warning C4700: local variable 'a' used without having been initialized
Deja si k1k1 pouvait m expliquer ce truc  :??:  
Ensuite qd je lance le programme bhe je saisie la valeur et qd j appuie sur enter bhe paf ca fait un erreur...
Bon je suis ultra debutant enprogramation ca doit pas etre une erreur bien difficile a trouver si quelqu un peut m aider je lui en serais tres reconnaissant :)
Merci par avance  :hello:

mood
Publicité
Posté le 21-12-2002 à 17:13:08  profilanswer
 

n°274478
youdontcar​e
Posté le 21-12-2002 à 17:19:21  profilanswer
 

>> warning C4101: 'b' : unreferenced local variable
 
'b' est une variable locale que tu n'as utilisé nulle part (tu l'as juste déclarée)
 
>> warning C4700: local variable 'a' used without having been initialized
 
il faut passer un pointeur à scanf : &a. en mettant a, tu donnes la valeur au lieu de son adresse. comme a n'a pas été initialisé, le compilo t'avertit.


Message édité par youdontcare le 21-12-2002 à 17:19:37
n°274483
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 21-12-2002 à 17:29:05  profilanswer
 

:pfff:  
 
le code correct est  

Code :
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   double a;
  5.   double b; //inutilisée
  6.   printf("saisissez un nombre : " );
  7.   fflush(stdin); // inutile et inutile et indéfini
  8.   scanf("%lf", &a);
  9. return 0; // ou EXIT_SUCCESS
  10. }


---------------
du bon usage de rand [C] / [C++]
n°274552
tabasc0
Posté le 21-12-2002 à 18:52:15  profilanswer
 

Merci :)

n°276384
xav14
Posté le 27-12-2002 à 12:24:43  profilanswer
 

je rajouterai que fflush(stdin) n'est pas admis par la norme ansi

n°276386
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 27-12-2002 à 12:27:58  profilanswer
 

xav14 a écrit :

je rajouterai que fflush(stdin) n'est pas admis par la norme ansi

déjà dit maintes fois. tout le monde pense que cette ligne est l'intruction ultime alors que j'ai déjà montré comment procéder proprement :sweat:  
 
certains y tiennent, ça leur donne l'impression que leur programme compilé avec leur bcc tourne mieux  :sol:
 
 
les habitudes ont la vie dure


---------------
du bon usage de rand [C] / [C++]
n°276401
xav14
Posté le 27-12-2002 à 13:17:52  profilanswer
 

Taz@PPC a écrit :

déjà dit maintes fois. tout le monde pense que cette ligne est l'intruction ultime alors que j'ai déjà montré comment procéder proprement :sweat:  
 
certains y tiennent, ça leur donne l'impression que leur programme compilé avec leur bcc tourne mieux  :sol:
 
 
les habitudes ont la vie dure


hum par contre ...  :whistle:  
 
j'ai honte de le dire mais ce sont les profs de licence info qui nous ont dit ca et a l'époque il n'avait donné aucune raison. alors pourquoi donc que c'est pas propre ? [:twixy]

n°276410
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 27-12-2002 à 13:23:51  profilanswer
 

par ce que :
- le fflush ca ne veut dire quelque chose que sur un flux de sortie (finaliser les ecritures bufferisées). sur un flux d'entrée ca ne veut rien dire: donc le langage ne définit pas le comportement. sur certains environnement, ca vide le buffer du flux dans le néant
- la bonne manière c'est de se faire une petite fonction
 

Code :
  1. void my_fflush(FILE *in, int delim)
  2. {
  3.   while(fgetc(in)!=delim));
  4. }
  5. // utilisation
  6. /* si on a rentré une phrase et apres avoir lu les premiers mots, on veut s'en débarasser et demander une ligne suivante */
  7. my_fflush(stdin, '\n');
  8. /* passer au mot suivant */
  9. my_fflush(stdin, ' ');
  10. /* voila le temps désiré fflush(stdin)*/
  11. my_fflush(stdin, EOF);


Message édité par Taz@PPC le 27-12-2002 à 13:24:01

---------------
du bon usage de rand [C] / [C++]

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

  [ C - Gros debutant ]Probleme de scanf

 

Sujets relatifs
probleme pour retirer le chemin d'un fichierprobleme de variable
[HTML] please, Aidez moi a centrer mes calques... (débutant inside)Petit probleme pour fermer une applet
probleme sur la commande echo [shell de Bourne]Probleme de concurrence d'acces inexpliquable ....
[delphi] débutant : Accès aux fichiersproblème avec 'showInputDialog'
[INTRANET] aide débutantproblème de comparaison de date (mysql).
Plus de sujets relatifs à : [ C - Gros debutant ]Probleme de scanf


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