Prog C : au secours!!!!!
loic
-
loic -
loic -
Hello
Je tourne la dessus depuis un petit moment, j'ai besoin d'aide sinon je vais me suicider :)
Je veux creer un tableau d'adresse de structure serieTraduction.
Cette structure se compose de deux char* origine et traduction.
L'appel de la fonction definitTraduc doit ajouter une adresse de serieTraduction
dans le tableau traduc de taille NB_TRADUC+1.
La variable tmp est bien initialise.
L'allocation dynamique tel que je l'ai creer provoque un bus errone lorsque
j'alloue la memoire a traduc[NB_TRADUC]->origine.
Si j'augmente la taille alloue, la premiere utilisation de definitTraduc se
passe bien mais lors du 2eme appel une faute de segmentation apparait a la
reallocation de la memoire de traduc.
Merci par avance de vos conseils.
int definitTraduc(serieTraduction** traduc)
{
char ** tmp
traduc = (serieTraduction**)realloc(traduc , (NB_TRADUC+1) *
(sizeof(serieTraduction*)));
tmp = (char**)malloc((NB_LANGUE) * sizeof(char*) );
traduc[NB_TRADUC] = (serieTraduction*)malloc( sizeof(serieTraduction));
/*divers traitements et mise en place de tmp*/
traduc[NB_TRADUC]->origine =
(char*)malloc((strlen(tmp[0])+1)*(sizeof(char)+2));
strcpy(traduc[NB_TRADUC]->origine , tmp[0]);
traduc[NB_TRADUC]->traduction =
(char*)malloc((strlen(tmp[LANGUE_CHOISIE])+1)*(sizeof(char)+2 ));
strcpy(traduc[NB_TRADUC]->traduction , tmp[LANGUE_CHOISIE]);
NB_TRADUC++;
}
Je tourne la dessus depuis un petit moment, j'ai besoin d'aide sinon je vais me suicider :)
Je veux creer un tableau d'adresse de structure serieTraduction.
Cette structure se compose de deux char* origine et traduction.
L'appel de la fonction definitTraduc doit ajouter une adresse de serieTraduction
dans le tableau traduc de taille NB_TRADUC+1.
La variable tmp est bien initialise.
L'allocation dynamique tel que je l'ai creer provoque un bus errone lorsque
j'alloue la memoire a traduc[NB_TRADUC]->origine.
Si j'augmente la taille alloue, la premiere utilisation de definitTraduc se
passe bien mais lors du 2eme appel une faute de segmentation apparait a la
reallocation de la memoire de traduc.
Merci par avance de vos conseils.
int definitTraduc(serieTraduction** traduc)
{
char ** tmp
traduc = (serieTraduction**)realloc(traduc , (NB_TRADUC+1) *
(sizeof(serieTraduction*)));
tmp = (char**)malloc((NB_LANGUE) * sizeof(char*) );
traduc[NB_TRADUC] = (serieTraduction*)malloc( sizeof(serieTraduction));
/*divers traitements et mise en place de tmp*/
traduc[NB_TRADUC]->origine =
(char*)malloc((strlen(tmp[0])+1)*(sizeof(char)+2));
strcpy(traduc[NB_TRADUC]->origine , tmp[0]);
traduc[NB_TRADUC]->traduction =
(char*)malloc((strlen(tmp[LANGUE_CHOISIE])+1)*(sizeof(char)+2 ));
strcpy(traduc[NB_TRADUC]->traduction , tmp[LANGUE_CHOISIE]);
NB_TRADUC++;
}
A voir également:
- Prog C : au secours!!!!!
- Robot prog - Télécharger - Édition & Programmation
- Clear prog - Télécharger - Sécurité
- Recherche petit prog autre que paint ✓ - Forum Windows
- Memoire insuffisante pour éxécuter ce prog... - Forum Matériel & Système
- Formule NBVAL sur prog excel VBA ✓ - Forum VB / VBA
1 réponse
pourqoi tu n'utiliserais pas les listes??? t'as pas a allouer dynamiquement la memoire, cela se fait directement par le systeme, si t'as pas jamais utilise voila une cellule que tu p utiliser apres
struct serieTraduction {
char *origine,traduction;
serieTraduction* suiv;
};
//et la tu declares ta varaible de type struct serieTraduction
serieTraduction* MaSerie , tmp;
MaSerie =new serieTraduction;
MaSerie->suiv = NULL;
tmp = new serieTraduction;
tmp->suiv = NULL;
origine = new char[var];//j'utilise la syntaxe de C++, celle de C j'utilise rarement
if(MaSerie->suiv ==NULL){
strcpy(MaSerie->origine,source);
strcpy(MaSerie->traduction, source2);
delete tmp;
}
else{
strcpy(tmp->origine,source);
strcpy(tmp->traduction,source2);
MaSerie->suiv = tmp;}
//la, tu n'as pas a reagarde la taille de ta liste et tu p supprimer ou tu v et qd tu v, il te suffiyt juste de refaire le chainage, mais bon c'est plus complique q ce q j'ai fait, il ya beacoup de choses q je n'ai pas teste, c'est juste un exemple.Tu sais ce qui te reste a faire
tafiscobar
struct serieTraduction {
char *origine,traduction;
serieTraduction* suiv;
};
//et la tu declares ta varaible de type struct serieTraduction
serieTraduction* MaSerie , tmp;
MaSerie =new serieTraduction;
MaSerie->suiv = NULL;
tmp = new serieTraduction;
tmp->suiv = NULL;
origine = new char[var];//j'utilise la syntaxe de C++, celle de C j'utilise rarement
if(MaSerie->suiv ==NULL){
strcpy(MaSerie->origine,source);
strcpy(MaSerie->traduction, source2);
delete tmp;
}
else{
strcpy(tmp->origine,source);
strcpy(tmp->traduction,source2);
MaSerie->suiv = tmp;}
//la, tu n'as pas a reagarde la taille de ta liste et tu p supprimer ou tu v et qd tu v, il te suffiyt juste de refaire le chainage, mais bon c'est plus complique q ce q j'ai fait, il ya beacoup de choses q je n'ai pas teste, c'est juste un exemple.Tu sais ce qui te reste a faire
tafiscobar
Et la taille du tableau peut etre enorme et je dois faire un recherche dichotomique dedans et je ne vois pa comment faire avec une liste