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
A voir également:
- Printf et scanf, ça compile bien mais...?
- Tapez cette phrase, en respectant bien les espaces et la ponctuation. - Guide
- Printf hexa - Forum Programmation
- Roulement en 12h qui fonctionne bien - Forum Bureautique
- Planning Paramed - Télécharger - Outils professionnels
- Vérifier que le serveur freebox est bien connecté à internet - Forum Freebox
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]