Fonction scanf

Fermé
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 - 9 mai 2011 à 21:58
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 - 10 mai 2011 à 14:17
Bonjour,

J'ai un probleme avec la fonction scanf
En faite je ne connais pas le nombre d'entré que l'utilisateur aura fait donc je me demande si quelqu'un peut m'aider a arranger mon bout de programme

int d,c=0;
printf("entrer les differentes annees : ");
while(scanf("%d",&d) != 0){
if(d == 0)
break;
printf("%d ",d);
c++;
}
printf("c = \n",c);

Merci d'avance

8 réponses

Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
9 mai 2011 à 22:21
Je ferai plutôt un truc du genre moi :

int d,c=0;
printf("entrer les differentes annees : \n");
scanf("%d",&d);
while (d != 0){
printf("%d ",d);
c++;
scanf ("%d", &d);
}
printf("c = \n",c); 


En fait faire le scanf dans la condition while ça fait bizarre je trouve, je sais pas trop comment ça réagi (je peux pas tester là) mais au premier test du while il considère comme vrai ou faux, est-ce qu'il lit bien l'entrée au clavier ?
Là dans ce que je t'ai mis, tu lis une première fois, tu fais ton test et tu rentres dans la boucle (si y'a pas de zéro la première fois), tu fais ton traitement et à la fin tu relis et ça met à jour la valeur dans d
0
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 12
9 mai 2011 à 22:25
merci d'avoir repondu aussi vite

mais en faite il fait la meme chose que mon programme il boucle a l'infini
0
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
9 mai 2011 à 22:32
ah......

Et en mettant un \n dans le second printf

printf("%d \n",d);
0
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 12
10 mai 2011 à 11:26
rien de changer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
10 mai 2011 à 13:04
#include <stdio.h>

int main (){
    int d=0;
    int c=0;
    printf("entrer les differentes annees : \n");
    scanf("%d",&d);
    while (d != 0){
          printf("%d ",d);
          c++;
          scanf ("%d", &d);
          }
    printf("c = \n",c); 
    return 0;
}


Si tu mets ça, ça te donne quoi ?
0
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 12
10 mai 2011 à 13:52
sa boucle toujours a l'infini a mon avi il faut mettre une condition de fin comme sa parce ke sa marche

int main() {
int d,c=0;
printf("Entrer les differentes annees, a la fin veuillez taper le chiffre 3 : ");
scanf("%d",&d);
while (d != 3){
printf("%d \n",d);
c++;
scanf ("%d", &d);
}
printf("c = %d \n",c);

}
0
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
10 mai 2011 à 13:57
oui c'est pareil que la première version non ? Dans la première il fallait rentrer le chiffre 0 pour sortir de la boucle (mais tu ne l'affichais pas à l'utilisateur)
0
nounou_89 Messages postés 44 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 20 mars 2014 12
10 mai 2011 à 14:17
wé merci pour ton aide
0