Printf et scanf, ça compile bien mais...?
bernard
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'ai réalisé un programme qui compile très bien mais à l'éxécution ça foire. Il s'agit juste de saisir des valeurs au clavier et de les recopier dans un enregistrement:
#include <stdio.h>
struct scooter {
int identification;
char *modele;
int kilometrage;
};
void afficherScooter(struct scooter s){
printf("Scooter numéro %d, Modele %s, %d km,", s.identification, s.modele, s.kilometrage);
}
void saisirScooter(struct scooter *ps){
printf("Saisissez le numéro d'identification du scooter: ");
scanf("%d\n", &ps->identification);
printf("Saisissez le modele de votre scooter: ");
scanf("%s\n", ps->modele);
printf("Sasissez le kilometrage de votre scooter: ");
scanf("%d\n", &ps->kilometrage);
}
int main(){
struct scooter s, *ps;
ps=&s;
saisirScooter(&s);
afficherScooter(s);
return 0;
}
Quand je tape ma première valeur et que je fais entrer, le second printf ne se lance pas, sauriez vous pq?
merci
#include <stdio.h>
struct scooter {
int identification;
char *modele;
int kilometrage;
};
void afficherScooter(struct scooter s){
printf("Scooter numéro %d, Modele %s, %d km,", s.identification, s.modele, s.kilometrage);
}
void saisirScooter(struct scooter *ps){
printf("Saisissez le numéro d'identification du scooter: ");
scanf("%d\n", &ps->identification);
printf("Saisissez le modele de votre scooter: ");
scanf("%s\n", ps->modele);
printf("Sasissez le kilometrage de votre scooter: ");
scanf("%d\n", &ps->kilometrage);
}
int main(){
struct scooter s, *ps;
ps=&s;
saisirScooter(&s);
afficherScooter(s);
return 0;
}
Quand je tape ma première valeur et que je fais entrer, le second printf ne se lance pas, sauriez vous pq?
merci
Configuration: Linux Mozilla 1.9.0.16
A voir également:
- Printf et scanf, ça compile bien mais...?
- Gif bien joué - Guide
- Vérifier que le serveur freebox est bien connecté à internet - Forum Freebox
- Roulement en 12h qui fonctionne bien - Forum Bureautique
- Vérifiez que le Serveur freebox est bien connecté à internet - Forum Freebox
- Scanf en java ✓ - Forum Java
1 réponse
Salut,
Pas de \n dans tes scanf et ça ira beaucoup mieux ;-))).
De plus attention à l'utilisation des scanf(%s,...) vaut mieux utiliser une fonction sécurisée comme fgets ou alors de bien spécifier la taille maximum.
Par ailleurs n'oublie pas de bien vider le flux explicitement si tu ne souhaites pas sauter de ligne avant la fin du programme avec fflush(stdout).
Cdlt,
Pas de \n dans tes scanf et ça ira beaucoup mieux ;-))).
De plus attention à l'utilisation des scanf(%s,...) vaut mieux utiliser une fonction sécurisée comme fgets ou alors de bien spécifier la taille maximum.
Par ailleurs n'oublie pas de bien vider le flux explicitement si tu ne souhaites pas sauter de ligne avant la fin du programme avec fflush(stdout).
Cdlt,
Utilise malloc pour cela, ou alors déclares simplement ta chaine ainsi :
char modele[100]