|
|
|
|
[C] Passage d'une structure en paramètre
Dernière réponse le 17 jan 2008 à 00:59:17 ilan27, le 16 jan 2008 à 19:21:19Bonsoir,
J'ai crée un petit programme, dont une fonction a du mal à compiler, et après plusieurs recherches, je ne trouve pas la solution. Mais je sais que ça doit être quelque chose de simple.
Voici la partie du main concernée: (Je crée une "Etiquette" aec un int, et un tableau de char)
struct Etiquette{
int adresse;
char nom[20];
};
//Je crée un tableau de 20 Etiquettes
struct Etiquette t[20];
//J'appelle la fonction, voir plus bas, censée écrire dans ce tableau, c'est-à-dire donner l'adresse et le nom aux structures
recupereEtiquettes(src, t, 20);
Et voici la fonction appelée (avec l'erreur de compliation):
void recupereEtiquettes(FILE * source, struct Etiquette t[], int taille){
int i=0, numligne=0;
char *ligne=(char *)malloc(60);
do{
fgets(ligne, 60, source);
//Je récupere une ligne d'un fichier
if(isEtiquette(ligne)){
t[i]={numligne, nomEtiquette(ligne)}; //Je définis ma structure---------->Erreur de compliation (voir plus bas)
i+=1;
}
numligne+=(sizeof(int));
}while(ligne!=NULL && i<taille);
if(i>=taille) printf("Trop d'étiquettes à stocker!\n");
}
Enfin; l'erreur de compliation est:(Tout concerne la meme ligne)
Invalid use of undefined type 'struct Etiquette'
Defercencing pointer to incomplete type
Syntax error before '{' token
ps: Erreur de compliation aussi si je mets à la place de cette ligne:
strcpy(t[i].nom, nomEtiquette(ligne));
t[i].adresse=numligne;
Merci beaucoup! (J'utilise Code::Blocks)
Configuration: Windows XP Internet Explorer 7.0
Bonjour,
|
Merci pour vos réponses!
|
C'est bien comme ça qu'il faut faire:
strcpy(t[i].nom, nomEtiquette(ligne)); t[i].adresse=numligne; Le problème c'est qu'il considère que ton type struct Etiquette n'est pas défini. Tu n'aurais pas déclaré ton type struct Etiquette à l'intérieur d'une fonction et non pas de manière globale? Sinon, il faudrait que tu nous mettes la source complète... |
Merci pour ta réponse.
|
Oui il y a une erreur à ce niveau :-)
|
J'ai essayé d'écrire
|
Salut,
|
Ah mais il fallait le dire que c'était deux fichiers!
struct Etiquette{
int adresse;
char nom[20];
};
Tu l'inclues dans tes deux fichiers C et tu peux maintenant utiliser cette structure tranquillement: #include "etiquettes.h" |
EEEEXCELLENT!!!!!
|
Nononon........ On ne globalise que le type!
|

