Incrémenter une variable... ?

Résolu
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006 - 16 juin 2005 à 21:23
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009 - 17 juin 2005 à 06:56
Hello,



Est-ce possible d'incrémenter une variable ?



Par exemple avec une boucle for:



char resstr1[1024];

char resstr2[1024];

char resstr3[1024];

...



int ResourceMax = 8001;



for ( int i = 0; i < 25; i++)

{

LoadString(hInstance, ResourceMax, resstr1, 1024);

ResourceMax++;

}



Dans cet exemple je voudrais qu'il incrémente resstr1, mais est-ce possible ?

5 réponses

cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
16 juin 2005 à 21:54
Salut !

Il suffit de faire un tableau de pointeur et de l'intégrer dans ta boucle :

// Tableau de 25 tableaux (char*)
char** ress = new char*[25];

// ou char* ress[25] ; selon tes goûts pour les pointeurs

for ( int i = 0; i < 25; i++)
{
// Affecte l'espace au char*
ress[i] = new char[1024] ;
LoadString(hInstance, ResourceMax, ress[i], 1024);
ResourceMax++;
}

Bon ok ça demande une petite connaissance des pointeurs, mais c'est un jeu marrant je trouve :) Et si tu es en C, il faut utiliser malloc ( ress[i] = malloc(sizeof(char),1024) ; ) Idem pour la première allocation, et surtout n'oublie pas de libérer la mémoire après utilisation !!

@+ Neria
3
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
16 juin 2005 à 22:23
Mais comme il n'y a aucun interet a "s'emmerder" avec une double allocation alors que la taille est connue,



char resstr[25][1024];



for ( int i = 0; i < sizeof resstr / sizeof resstr[0]; i++)

{

LoadString(hInstance, ResourceMax, resstr[i], sizeof resstr[0]);

ResourceMax++;

}



ps: sizeof(char) vaut 1, c'est sur.
3
Zootella Messages postés 252 Date d'inscription vendredi 10 juin 2005 Statut Membre Dernière intervention 5 septembre 2006
16 juin 2005 à 22:25
Donc j'obtiens ceci :



void LoadStr(HINSTANCE hInstance)

{

int ResourceMax = 8001;

char * ress[25] ;

int i;



for ( i = 0; i < 25; i++)

{

ress[i] = malloc(1024);

LoadString(hInstance, ResourceMax, ress[i], 1024);

ResourceMax++;

}

...

free(ress);

}



Merci, juste un truc : "new" ne fonctionne pas sous dev-cpp, enfin pour moi... pourquoi ?



`new' undeclared (first use in this function)
0
steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
16 juin 2005 à 22:59
new n'est pas une fonction, c'est un opérateur du langage C++. Si tu
fais du C utilises malloc (ou calloc, realloc) et free pour gerer
dynamiquement la mémoire.



Une erreur:

free(ress);

à remplacer par

for ( i = 0; i < sizeof ress / sizeof ress[0]; i++)

{

free(ress[i]);

}



Mais l'allocation dynamique ne sert à rien dans ce cas, utilises tout simplement un tableau:

char resstr[25][1024];
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neria Messages postés 319 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 16 février 2009
17 juin 2005 à 06:56
Salut !

C'est vrai qu'en y relechissant un peu, un simple ress[25][1024] suffit, je n'y ais pensé que trop tard, j'ai tellement l'habitude de passer par les pointeurs que je n sais plus faire les trucs basique ;)

@+ Neria
0
Rejoignez-nous