NiTrOuS Posté(e) le 13 juin 2004 Partager Posté(e) le 13 juin 2004 #include <stdio.h> #include <conio.h> struct test { char code[6]; float rem[6]; }; void prestation(struct test *); void main() { int i; struct test tab[6]; prestation(&tab[6]); for(i=0;i<6;i++) { printf("%s",tab[i].code); printf("%.2f",tab[i].rem); } clrscr(); } void prestation(struct test *tab[6]) { int i; for(i=0;i<6;i++) { printf("\nEntrez le code de la prestation %d: ",i+1); gets(tab[i]->code); printf("\nEntrez la remuneration pour la prestation %d: ",i+1); scanf("%f",tab[i]->rem); } } Voilà il me dit qu il y a un probleme de linker ... je ne vois pas quel est le probleme :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
Irgoff Posté(e) le 13 juin 2004 Partager Posté(e) le 13 juin 2004 Sans ton message d'erreur, on peut deviner que tu n'as inclus la librairie "conio" dont tu fais usage : ajoute "-lconio" à ton linker. De plus tu déclares une fonction void prestation(struct test *); mais tu la codes en void prestation(struct test *tab[6]) qui est équivalent à void prestation(struct test * *); donc le linker ne trouve pas la fonction void prestation(struct test *); et te demande où est la librairie qui en contient le code. Tu peux aussi changer ton "void main" (Borland) en "int main" (standard). Voilou. :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
mickey_mouse Posté(e) le 5 juillet 2004 Partager Posté(e) le 5 juillet 2004 je ne sait pas si tu est encore interréssé, mais voila #include <stdio.h> #include <conio.h> struct test { char code[6]; float rem; // a quoid donc servait ce tableau ??? }; void prestation(struct test *); int main(void) { int i; struct test tab[6]; prestation(tab); //tab est bien un pointeur for(i=0;i<6;i++) { printf("%s",tab.code); printf("%.2f",tab.rem); } getche(); //clrscr(); } void prestation(struct test tab[]) { int i; char vider; for(i=0;i<6;i++) { printf("\nEntrez le code de la prestation %d: ",i+1); gets((tab+i)->code); printf("\nEntrez la remuneration pour la prestation %d: ",i+1); scanf("%f",&(tab+i)->rem); gets(&vider); } } bon ton code est un exemple de tt ce qu'il ne faut pas faire !!! a savoir, tab[] est un pointeur, inutile d'ajouter * pour utiliser -> il faut un pointeur, exit donc les [] et vive les incrementation. si tu veut recuperer une variable a partir de (tab+i) qui est un pointeur, tu rajoute * devant ; *(tab+i) ou tu colle un -> derriere. mais le gets prend des pointeur? et bien code est un tableau et contien donc un pointeur... aïl la tete ??? bon pour la variable rem, j'ai viré le tableau dans la classe, qui ne servait a rien. (tab+i)->rem pointe donc une variable, dont on obtien le pointeur avec & un petit bug, le retour chario persiste dans le buffer de caractere, je le recupere dans vider avant de boucler. ha... et prestation, et bien cette fonction fonctionne avec un pointeur; tab suffit donc. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.