A voir également:
- Chargement ds un tableau de structure
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. - Forum Excel
7 réponses
Ravachol
Messages postés
560
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
12 déc. 2004 à 14:19
12 déc. 2004 à 14:19
Salut,
Te serais t-il possible de poster la définition de ta structure s_dvd ?
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
Te serais t-il possible de poster la définition de ta structure s_dvd ?
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
bien sur la voila :
struct s_acteur
{
char acteur_nom[20];
char acteur_prenom[20];
};
struct s_dvd
{
int dvd_num;
char dvd_titre[30];
int dvd_annee;
char dvd_realisateur[30];
struct s_acteur dvd_acteur[3];
char dvd_code;
int dvd_duree;
};
struct s_acteur
{
char acteur_nom[20];
char acteur_prenom[20];
};
struct s_dvd
{
int dvd_num;
char dvd_titre[30];
int dvd_annee;
char dvd_realisateur[30];
struct s_acteur dvd_acteur[3];
char dvd_code;
int dvd_duree;
};
Ravachol
Messages postés
560
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
12 déc. 2004 à 14:51
12 déc. 2004 à 14:51
Fais un essai en remplacant les affectations sur le char[] par
En faisant gaffe à ce que la destination soit capable d'accèpter le nombre de caractère contenus dans la source ;-) Sinon il y a la fonction strncpy qui prend un taille max en paramètre.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
strcpy(ptr->dvd_acteur[0].acteur_nom, "nom acteur");
En faisant gaffe à ce que la destination soit capable d'accèpter le nombre de caractère contenus dans la source ;-) Sinon il y a la fonction strncpy qui prend un taille max en paramètre.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
j'ai changé ma boucle while de ma focntion en ceci :
while((fread(&dvd,sizeof(struct s_dvd),1,file))==1)
{
ptr->dvd_num=dvd.dvd_num;
strcpy(ptr->dvd_titre,dvd.dvd_titre);
ptr->dvd_annee=dvd.dvd_annee;
strcpy(ptr->dvd_realisateur,dvd.dvd_realisateur);
/* strcpy(ptr->dvd_acteur[1].acteur_nom,dvd.dvd_acteur[1].acteur_nom);
strcpy(ptr->dvd_acteur[1].acteur_prenom,dvd.dvd_acteur[1].acteur_prenom);
strcpy(ptr->dvd_acteur[2].acteur_nom,dvd.dvd_acteur[2].acteur_nom);
strcpy(ptr->dvd_acteur[2].acteur_prenom,dvd.dvd_acteur[2].acteur_prenom);
strcpy(ptr->dvd_acteur[3].acteur_nom,dvd.dvd_acteur[3].acteur_nom);
strcpy(ptr->dvd_acteur[3].acteur_prenom,dvd.dvd_acteur[3].acteur_prenom);*/
ptr->dvd_code=dvd.dvd_code;
ptr->dvd_duree=dvd.dvd_duree;
ptr++;
}
avec les strcpy donc.
Pas de probleme a la compilation, mais a l'exécution... pour le premier DVD il affiche bien les format int, il affiche bien dvd_titre mais le reste rien du tout :/ et mon pc fait "bip bip bip bip bip". Quand aux dvd suivants rien ne s'affiche correctement ormis les format int...
:(
while((fread(&dvd,sizeof(struct s_dvd),1,file))==1)
{
ptr->dvd_num=dvd.dvd_num;
strcpy(ptr->dvd_titre,dvd.dvd_titre);
ptr->dvd_annee=dvd.dvd_annee;
strcpy(ptr->dvd_realisateur,dvd.dvd_realisateur);
/* strcpy(ptr->dvd_acteur[1].acteur_nom,dvd.dvd_acteur[1].acteur_nom);
strcpy(ptr->dvd_acteur[1].acteur_prenom,dvd.dvd_acteur[1].acteur_prenom);
strcpy(ptr->dvd_acteur[2].acteur_nom,dvd.dvd_acteur[2].acteur_nom);
strcpy(ptr->dvd_acteur[2].acteur_prenom,dvd.dvd_acteur[2].acteur_prenom);
strcpy(ptr->dvd_acteur[3].acteur_nom,dvd.dvd_acteur[3].acteur_nom);
strcpy(ptr->dvd_acteur[3].acteur_prenom,dvd.dvd_acteur[3].acteur_prenom);*/
ptr->dvd_code=dvd.dvd_code;
ptr->dvd_duree=dvd.dvd_duree;
ptr++;
}
avec les strcpy donc.
Pas de probleme a la compilation, mais a l'exécution... pour le premier DVD il affiche bien les format int, il affiche bien dvd_titre mais le reste rien du tout :/ et mon pc fait "bip bip bip bip bip". Quand aux dvd suivants rien ne s'affiche correctement ormis les format int...
:(
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ravachol
Messages postés
560
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
12 déc. 2004 à 17:17
12 déc. 2004 à 17:17
- As-tu vérifié le format des données dans le fichier que tu vas lire ?
- Qui écrit les données dans ce fichier ?
- Si c'est toi qui écris dedans, la fonction d'écriture est-elle débugée ?
- La taille mémoire que tu alloues avec malloc est-elle correcte ?
Pour éliminer cette hypothèse d'erreur tu pourrais allouer pour 2 structures par exemple en faisant un malloc(2*sizeof(struct s_dvd))
- As tu tracé les instructions dans ta boucle, par exemple au lieu de faire une affectation tu fais un printf("%s \n", dvd.dvd_acteur[1].acteur_nom). Ca te permettras de vérifier que tu récupères des données correctes depuis ton fichier.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
- Qui écrit les données dans ce fichier ?
- Si c'est toi qui écris dedans, la fonction d'écriture est-elle débugée ?
- La taille mémoire que tu alloues avec malloc est-elle correcte ?
Pour éliminer cette hypothèse d'erreur tu pourrais allouer pour 2 structures par exemple en faisant un malloc(2*sizeof(struct s_dvd))
- As tu tracé les instructions dans ta boucle, par exemple au lieu de faire une affectation tu fais un printf("%s \n", dvd.dvd_acteur[1].acteur_nom). Ca te permettras de vérifier que tu récupères des données correctes depuis ton fichier.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
le format des données est correct, c'est moi qui écris dans le meme programme via une autre fonction, et une "bête" lecture séquentielle ne pose aucun problème.
Concernant la taille allouée, je fais un petit calcul ( taille du fichier en octest / taille d'une structure s_dvd) = nombre d'enregistrement que je multiplie par le nmobre d'octets de ma structure, correct je pense .
J'ai fait un printf du nom de l'acteur 1 et bon en effet ya un probleme lol, jvais regarder ca :)
Concernant la taille allouée, je fais un petit calcul ( taille du fichier en octest / taille d'une structure s_dvd) = nombre d'enregistrement que je multiplie par le nmobre d'octets de ma structure, correct je pense .
J'ai fait un printf du nom de l'acteur 1 et bon en effet ya un probleme lol, jvais regarder ca :)