Le programme ne fonctionne pas bien
ABC123
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Merci d'avance .
#include <stdio.h> #include <stdlib.h> typedef struct{ int jour; int mois; int annee; }Datenaissance; typedef struct{ char nom; char prenom; Datenaissance date; }Stagiaire; int main(int argc, char *argv[]) { Stagiaire s; printf("nom : "); scanf("%s",s.nom); printf("prenom : "); scanf("%s",s.prenom); printf("jour : "); scanf("%d",&s.date.jour); printf("mois : "); scanf("%s",&s.date.mois); printf("annee : "); scanf("%s",&s.date.annee); printf("Les informations du stagiaire : \n"); printf("Nom : %s\n Prenom : %s \n Date de naissance : %d/%d/%d ",s.nom,s.prenom,s.date.jour,s.date.mois,s.date.annee); return 0; }
Merci d'avance .
A voir également:
- Le programme ne fonctionne pas bien
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Programme demarrage windows - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
3 réponses
Bonjour,
et pourquoi il ne fonctionne pas bien ?
ca donne quoi ?
tu as un message d'erreur ?
sinon, pour plus de clarté il faut afficher ton code avec les balises
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
et pourquoi il ne fonctionne pas bien ?
ca donne quoi ?
tu as un message d'erreur ?
sinon, pour plus de clarté il faut afficher ton code avec les balises
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :
#include <stdio.h> int main(){ printf("Hello World!"); return 0; }
Salut ABC123,
Poste ton code correctement, comme te l'indique Phil_1857.
Deux problèmes essentiellement, se retrouvent tout au long du code posté.
Un type comme
Pour stocker une chaîne de caractères il faut un espace de stockage suffisant pour y mettre des chars consécutifs constituant la chaîne y compris le
Les spécificateurs de
https://www.cplusplus.com/reference/cstdio/scanf/
Dal
Poste ton code correctement, comme te l'indique Phil_1857.
Deux problèmes essentiellement, se retrouvent tout au long du code posté.
Un type comme
char nom;ne permet de stocker qu'un seul char, pas une chaîne de caractères.
Pour stocker une chaîne de caractères il faut un espace de stockage suffisant pour y mettre des chars consécutifs constituant la chaîne y compris le
'\0'terminal. Par exemple un type
char nom[256];permet de stocker une chaîne de 255 char, plus le
'\0'terminal.
Les spécificateurs de
scanf()doivent correspondre aux types des emplacements mémoire où ils doivent être stockés. Là tu utilises systématiquement %s, qui est correct si tu récupères des chaînes de caractères s'arrêtant au première caractère blanc, mais c'est %d que tu dois utiliser pour récupérer un int.
https://www.cplusplus.com/reference/cstdio/scanf/
Dal
#include <stdio.h> #include <stdlib.h> typedef struct{ int jour; int mois; int annee; }Datenaissance; typedef struct{ char nom[12]; char prenom[12]; Datenaissance date; }Stagiaire; int main(int argc, char *argv[]) { Stagiaire s; printf("nom : "); scanf("%s",s.nom); printf("prenom : "); scanf("%s",s.prenom); printf("jour : "); scanf("%d",&s.date.jour); printf("mois : "); scanf("%s",&s.date.mois); printf("annee : "); scanf("%s",&s.date.annee); printf("Les informations du stagiaire : \n"); printf("Nom : %s\n Prenom : %s \n Date de naissance : %d/%d/%d ",s.nom,s.prenom,s.date.jour,s.date.mois,s.date.annee); return 0; }
Comme ça ?