Utilisation de chaines de caractères en C

Résolu/Fermé
baedyl Messages postés 9 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 15 juin 2015 - 27 févr. 2015 à 00:09
baedyl Messages postés 9 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 15 juin 2015 - 1 mars 2015 à 00:09
Bonjour/Bonsoir à tous,
J'ai écrit un programme C qui utilise un enregistrement d'étudiant, j'ai un problème avec la lecture d'une chaine de caractères(Nom et prenom de l'etudiant), j'ai utilisé la fonction "gets".
S'il vous plait j'ai besoin d'une solution à ce problème,
Merci.
Voici le code:

#include<stdio.h>
#include<conio.h>
typedef struct
{
int Matricule;
char NP[50];
float Moyenne;
}Etudiant;
main(){
Etudiant E;
printf("Entrer le matricule de l'etudiant: ");
scanf("%d",&E.Matricule);
printf("Entrer le nom et le prenom de l'etudiant: ");
gets(E.NP);
printf("Entrer la moyenne de l'etudiant");
scanf("%f",&E.Moyenne);
puts("Les information sur l'etudiant sont:\n");
printf("Le matricule: %d\n",E.Matricule);
printf("Nom et Prenom: %d\n",E.NP);
printf("La moyenne: %2f",&E.Moyenne);
getch();
}
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 févr. 2015 à 00:19
Bonjour,

Mes remarques sur le code :
#include<conio.h>
Non standard. A supprimer si possible.

main(){
Le bon prototype est : int main(void)

gets(E.NP);
gets() est obsolète. Utilise plutôt : fgets(E.NP, sizeof E.NP, stdin);

printf("Nom et Prenom: %d\n",E.NP);
E.NP est un tableau de char. Pour l'affiche, il faut donc utiliser %s (et non %d).

printf("La moyenne: %2f",&E.Moyenne);
Il ne faut pas mettre l'esperluette (&) devant la variable E.Moyenne.

getch();
Utilise plutôt getchar(); getchar(); (oui deux fois).
Ou sinon system("pause"); en rajoutant au début #include <stdlib.h>

Et il ne faut pas oublier : return 0; en fin de main().

Note : la prochaine fois, merci d'utiliser la balise "code" pour garder l'indentation.
Exemple :
<code c>ici tu mets ton code</code>
0
baedyl Messages postés 9 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 15 juin 2015
28 févr. 2015 à 13:12
Merci pour la correction,
mais jusque là je n'arrive toujours pas à lire la chaine de caractères.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 févr. 2015 à 18:13
Montre les corrections que tu as apportées.
N'oublie pas pour les balises.
0
baedyl Messages postés 9 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 15 juin 2015
28 févr. 2015 à 20:56

#include<stdio.h>

typedef struct
{
int Matricule;
char NP[50];
float Moyenne;
}Etudiant;
int main(void){
Etudiant E;
do{
printf("Entrer le matricule de l'etudiant: ");
scanf("%d",&E.Matricule);
}while(E.Matricule<=0);
printf("Entrer le nom et le prenom de l'etudiant: ");
fgets(E.NP, sizeof E.NP, stdin);
do{
printf("Entrer la moyenne de l'etudiant ");
scanf("%f",&E.Moyenne);
}while(E.Moyenne<0);
puts("Les information sur l'etudiant sont:\n");
printf("Le matricule: %d\n",E.Matricule);
printf("Nom et Prenom: %s\n",E.NP);
printf("La moyenne: %1f",E.Moyenne);
getchar(); getchar();
return 0;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 févr. 2015 à 23:47
Rajoute un getchar(); après scanf("%d",&E.Matricule); et ça devrait être mieux.
0
baedyl Messages postés 9 Date d'inscription vendredi 27 février 2015 Statut Membre Dernière intervention 15 juin 2015
1 mars 2015 à 00:09
Merci pour tout! Ca marche super bien maintenant!
0