Probleme avec realloc() ... [Résolu]

Signaler
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
-
steve_clamage
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
-
Voili voilou, j'ai une erreur de compilation avec ce petit bout de code :

void addop(char opnick[50])

{

nboper++;

oper = realloc(oper, nboper * sizeof(char));

oper[nboper - 1] = new char [50];

strcpy(oper[nboper - 1],opnick);

}

Sachant que les declaration qui precedent sont :

char * oper [1];

int nboper = 1;



Voila ce que le compilateur me dit :

C:\***\main.cpp In function `void addop(char*)':

961 C:\***\main.cpp incompatible types in assignment of `void*' to `char*[1]'



Si quelqu'un a une petite idee, c'est la premiere fois que j'essaye d'utiliser realloc ... ^^

4 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
char * oper [1];
=> cela définit un tableau de pointeurs.

pour utiliser réalloc dans ton cas :
char* oper;
oper = (char*)malloc(<taille initiale>*sizeof(char)); // la première allocationoper (char*)realloc(oper, <nouvelle taille>*sizeof(char)); // pour les allocations suivantes.> cela augmentera la taille d'un tableau de char ou d'une chaîne de caractères.

si tu souhaites régler la taille d'un tableau de char* ie un tableau de chaines :
char** oper;
oper = (char**)malloc(<taille initiale>*sizeof(char*)); // la première allocation
oper = (char**)realloc(oper, <nouvelle taille>*sizeof(char*)); // pour les allocations suivantes.
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
C'est simple, n'utilises pas realloc en C++, c'est une fonction de la
lib C et C++ offre de meilleur alternatives comme std::vector.

[url]http://casteyde.christian.free.fr/online/cours_cpp/x8502.html#AEN8644/url
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
1
merci ymca2003

en faite c'est juste le (char*) qui me manquait ^^
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Statut
Membre
Dernière intervention
11 août 2006
2
realloc peu faire la premiere allocation (il peu meme liberer) et c'est idiot et dangereux d'utiliser *alloc du C en C++.