Aller au contenu

Urgent, probleme de structure en C


NiTrOuS

Messages recommandés

#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

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

  • 3 semaines après...

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 ??? :eeek2:

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.

:postsinutiles:

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...