|
|
|
|
voici une partie du code, ma fonction bloque, dites moi quoi faire pour que ça tourne bien!
merci
char* cree_tableau(MEMBRE *pkarate, char data[][41],int nmembre)
{
int i,j,ncomax=41;
char tmp[41];
// sauvegarde dans un tableau temporaire
for(i=0;i<nmembre;i++)
{
tmp[i]=pkarate->categorie;
strncpy(&tmp[i+1],pkarate->nom,strlen(pkarate->nom+1));
strcat(&tmp[strlen(pkarate->nom)],pkarate->prenom);
}
for(i=0;i<nmembre;i++)
{
for(j=0;j<ncomax;j++)
{
strcpy((&data[i][j]),&tmp[i]);
}
pkarate++;
}
return &data[0][0];
// aff
for(i=0;i<nmembre;i++)
{
for(j=0;j<41;j++)
{
printf(" %c %s ",data[i][j],data[i][j]);
}
}
}
Mmh, je suis pas convaincue que tu puisses définir un tableau à deux dimensions comme ça.. En C, un tableau, c'est de l'espace mémoire que tu réserves (lors de la déclaration) et que tu remplis ensuite par l'opérateur [] (cf ce très bon tutoriel : http://chgi.developpez.com/pointeur/). Donc quand tu veux appeler data[i][j], tu essaies de lire à l'adresse pointée par (data[i] + j), or data[i] n'est pas un pointeur...
typedef struct tableau //définition de ta structure (appelée tableau)
{char nom;
char categorie;
}
ensuite, tu peux t'en servir dans ton main : tableau donnees []; //définition du tableau "données" à remplir donnees[i].nom = toto; // on met "toto" dans le champ "nom" de donnees[i] donnees[i].categorie = shotokai;// on met "shotokai" dans le champ "categorie" de donnees[i] Je te garantis pas à 100% le code ci-dessus, vu que je n'ai pas de compilateur C sous la main, mais ça devrait être un truc dans ce genre. Si tu as des pbs avec les notions de base du C, regarde dans les tutoriels ou la FAQ de ce site : www.developpez.com bon courage, Agnès |
Vous n'avez peut être pas compris la partie de mon code, je vous envoie tout mon code si dessous, pour que vous voyer là ou il ya le probleme qui bloque mon prog! merci de me repondre je compte sur vous
|
En effet, ce n'est pas tout à fait ce que vous devez faire, mais c'est l'esprit il me semble?
|
Quelques corrections :
/* Mis a jour du nbre d'element nenfant=*pnenfant; /* Mis a jour du nbre d'enfant nadulte=*pnadulte; /* Mis a jour du nbre d'adulte */ par : /* Mis a jour du nbre d'element nenfant=*pnenfant; //Mis a jour du nbre d'enfant nadulte=*pnadulte; //Mis a jour du nbre d'adulte */ 4- rajouter à la fin du main : return 0; 5- mettre la fonction main en dernière position ça fait mieux :p 6- remplacer #include <conio.h> par #include <ctype.h> 7- remplacer printf(" %c %s ",data[i][j],data[i][j]);
par (data[i][j] est un char, pas un char *) printf(" %c %c ",data[i][j],data[i][j]);
Ce passage me semble bizarre que veux tu faire d'ailleurs ? 8- remplacer indexe[i]=(indexe,nadulte); par (cette écriture n'a aucun sens en C) indexe[i]=nadulte; 9 - remplacer printf(" %c %c %s ",data,data[indexe[i]][j])
par exemple par : (data ne peut être afficher directement, il faut faire une boucle) printf("data %c ",data[indexe[i]][j])
Après ça déjà ça devrait commencer à compiler. Le compilateur suggère d'éviter d'utiliser fgets, et en effet tu devrais plutôt utiliser scanf. Après pour ce qui est de l'éxecution je ne sais pas ce que ça donne... Bonne chance |