Le programme ne fonctionne pas bien
ABC123
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
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
- Programme word gratuit - 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 ?