Probleme avec realloc() ...

Résolu
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 - 18 mai 2005 à 19:42
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 - 19 mai 2005 à 18:24
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 mai 2005 à 09:39
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.
3
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
18 mai 2005 à 20:35
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
0
cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 2
19 mai 2005 à 16:48
merci ymca2003

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