J'ai un problème avec SCCANF() et les types de variables

J'ai un problème avec SCCANF() et les types de variables - C - Programmation

Marsh Posté le 09-03-2004 à 13:37:46    

Salut!
J'ai un vieux bug avec scanf()!!!
 
J'ai tapé un programme, censé me calculer la somme des carrés de N entiers entrés par l'utilisateur:
 
     #include<stdio.h>
     int  
     main(){
      int N,i,z;

[/#ff7100](5)   char reste;
      float x,y;
   
      do{
         printf("Entrez un entier N positif ou nul\n" );

(10)        z=scanf("%d",&N);
     
         do{
           scanf("%c",&reste);
         }while (reste !='\n');

(15)
       }while ((z==0)||(N<0));
   
       y=0;
 

(20)     if (N==0){
         printf("Aucun réel à entrer... Le programme va s'arrêter!\n" );
         return 1;
       }

   
(25)     for (i=1;i<=N;i++){
         printf("Entrez un réel\n" );
         scanf("%f",&x);
         y=y+x*x;
       }

(30)  
       printf("La somme des carrés des réels entrés est %f\n",y);
       return 0;
     }

Quand je le compile, si je lui donne un caractere au lieu d'un entier (ligne 9-10) il me redemande un  entier! Jusque là, pas de probleme!
 
Mais si je lui entre un flottant (ou un réel si vous préférez), continue l'execution du programme et me retourne un résultat incohérent!
 
 

Reply

Marsh Posté le 09-03-2004 à 13:37:46   

Reply

Marsh Posté le 09-03-2004 à 13:58:38    

y a la balise [code] pour que le code soit lisible, ça donne mieux que [g]+[s]+[i] :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 09-03-2004 à 14:04:03    

ya même [cpp] quand c'est du C :o
 
et accessoirement ça s'écrit scanf et non SCCANF (fonction non reconnue en C) :o


Message édité par drasche le 09-03-2004 à 14:04:32

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 09-03-2004 à 14:05:47    

scanf("%c",&reste);  -> getchar()
 
 
1) vérifier le retour de scanf systèmatiquement
2) si c'est ce que tu veux, bouffe le reste jusqu'à  caractère d'espacement (isspace) ou EOF

Reply

Marsh Posté le 10-03-2004 à 18:16:34    

Merci pour l'info sur la balise! Je savais pas!
Pour l'erreur syntaxique, je sais pertinemment que la fonction s'écrit scanf()!
Inutile de me le remarquer! Si tu avais vu mon code C t'aurais vu qu'il n'y avait pas de fautes! ou presque, sinon je ne serais pas sur ce forum!
 
Au fait, TAZ, je suis obligé (par le prof) d'utiliser la fonction scanf(), même si d'autres fonctions semblent plus interessantes.
 
Donc s'il vous plaît, que quelqu'un m'aide!!!
 
Merci beaucoup de passer du temps à lire mes plaintes diverses!

Reply

Marsh Posté le 10-03-2004 à 18:17:49    

quoi ? fais ce qu'on te demande d'abord, et comprends avec scanf tu ne pourras pas lire un '\n' ni tout autre caractère d'espacement


Message édité par Taz le 10-03-2004 à 18:18:11
Reply

Marsh Posté le 15-03-2004 à 15:07:20    

Si quelqu'un pouvait me filer le script correctement tapé ce serait vraiment génial... abusé, mais génial.
 
Ca fait 2 semaines que je rame! J'y comprends rien!
Le prof insiste pour qu'on utilise SCANF()!
 
Merci d'avance.
 
Foolslord

Reply

Marsh Posté le 15-03-2004 à 15:21:10    

on est pas la pour faire tes TP , c'est hors charte ...
alors remue toi un peu et gratte ca.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed