Titre: Allocation dynamique - 2 exemples Posté par: jpdelx sur 20 Octobre 2012 à 17:41:12 Bonjour
Code: #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct { char *prenom; /* 1 chaine = 1 pointeur sur ... */ char *nom; int age; } Information; void saisie(Information *info){ printf("Enter le prenom.....: "); (*info).prenom=(char *)malloc(26*sizeof(char)); /* allocation dynamique obligatoire */ scanf("%s",(*info).prenom); printf("Enter le nom........: "); info->nom=(char *)malloc(26*sizeof(char)); scanf("%s",(*info).nom); printf("Enter l'age.........: "); scanf("%d",&info->age); } void affichage(Information info){ printf("Monsieur: %s %s, qui a %d ans\n",info.nom, info.prenom,info.age); } int main (int argc, char *argv[]) { Information monInfo; saisie(&monInfo); affichage(monInfo); system("PAUSE"); return 0; } Code: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 10 typedef struct { char *nom; char *prenom; char *matiere; float note; } Etudiant; void saisieEtudiant(Etudiant *etudiantLocal) { printf("saisissez le nom de l'étudiant......: "); (*etudiantLocal).nom=(char *)malloc(sizeof(char)*26); gets((etudiantLocal)->nom); printf("saisissez le prenom de l'étudiant...: "); (*etudiantLocal).prenom=(char *)malloc(sizeof(char)*26); gets((etudiantLocal)->prenom); printf("Saisissez la matiere de l'étudiant..: "); (*etudiantLocal).matiere=(char *)malloc(sizeof(char)*26); gets((etudiantLocal)->matiere); printf("Saisissez la note de la matière.....: "); scanf("%f%*c",&etudiantLocal->note); } void affichageEtudiant(Etudiant etudiant){ printf("%s %s a eu %6.2f pour la matiere %s\n", etudiant.nom, etudiant.prenom, etudiant.note, etudiant.matiere); } void saisieEtudiantMultiple(int x, Etudiant *ptr){ int i; for(i=0; i<x; i++) { printf("Etudiant %2d :\n",i);saisieEtudiant(ptr+i); } } void affichageEtudiantMultiple(int x, Etudiant *ptr){ int i; for(i=0; i<x; i++) affichageEtudiant(*(ptr+i)); } int main (int argc, const char * argv[]){ int n; Etudiant *tabEtudiant; printf("Combien voulez vous rentrer d'étudiants ? : "); scanf("%i%*c", &n); tabEtudiant=(Etudiant *)malloc(n*sizeof(Etudiant)); saisieEtudiantMultiple(n,tabEtudiant); affichageEtudiantMultiple(n,tabEtudiant); system("pause"); return 0; } @lpf J.Phil.
e-Babillard - plateforme pédagogique interactive | Propulsé par SMF 1.0.6 modifié par jpdelx.
© 2001-2005, Lewis Media. Tous droits réservés. |