Incrémenter une variable... ? [Résolu]

Zootella
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Dernière intervention
5 septembre 2006
- 16 juin 2005 à 21:23 - Dernière réponse : cs_neria
Messages postés
320
Date d'inscription
vendredi 21 février 2003
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 ?
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_neria
Messages postés
320
Date d'inscription
vendredi 21 février 2003
Dernière intervention
16 février 2009
- 16 juin 2005 à 21:54
3
Merci
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

Merci cs_neria 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_neria
Meilleure réponse
steve_clamage
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
- 16 juin 2005 à 22:23
3
Merci
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.

Merci steve_clamage 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de steve_clamage
Zootella
Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Dernière intervention
5 septembre 2006
- 16 juin 2005 à 22:25
0
Merci
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)
Commenter la réponse de Zootella
steve_clamage
Messages postés
475
Date d'inscription
dimanche 3 octobre 2004
Dernière intervention
11 août 2006
- 16 juin 2005 à 22:59
0
Merci
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];
Commenter la réponse de steve_clamage
cs_neria
Messages postés
320
Date d'inscription
vendredi 21 février 2003
Dernière intervention
16 février 2009
- 17 juin 2005 à 06:56
0
Merci
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
Commenter la réponse de cs_neria

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.