Char * test[264]

youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 24 juil. 2003 à 16:20
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 - 12 août 2003 à 17:12
si je créé cette variable
char * test[264];

et si je fait
test[0]="test";
test[1]="test1";

ceci fonctionne

mais si par exemple si je fais
int nb=0;
char charr[40];

void LireFichier()
{
FILE* fil=fopen("C:\\tmp1.txt","r");
fscanf(fil,"%s",charr);
fclose(fil);
}

void fonction()
{
LireFichier();
test[nb]=charr;
nb++;
}

le nouveau écrase l'ancien

si par exemple au premier passage charr est égale à test
test[0] est égale à test

mais si au deuxieme passage charr équivaut à peutimporte

test[0] équivaut à peuimporte
ainsi que test[1] équivaut à peuimporte

pourquoi??????
merci

2 réponses

tcok Messages postés 61 Date d'inscription samedi 7 juin 2003 Statut Membre Dernière intervention 3 août 2005
24 juil. 2003 à 18:01
en fait un tableau est comme un pointeur !
tout les element de ton tableau de pointeur ( char* test[] )
vont pointer sur le meme endroit en memoire

il faudrait que tu fasse un malloc pour creer a chaque fois un nouveau char

exemple :

LireFichier();
test[nb]=(char*)malloc(strlen(charr+1));
strcpy(&test[nb], charr, strlen(charr));
nb++;


sans oublier bien sur de liberer la memoire a la fin du prog ;-)

@+
tcok
0
HCJarod Messages postés 221 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 11 décembre 2008 1
12 août 2003 à 17:12
Tu déclare un tableau de pointeurs char *test[264] mais qui ne pointe sur rien!! utilse malloc pour allouer un espace mémoire à chaque pointeur (autant de malloc que de lignes). Après le malloc, tes pointeurs pointent sur une zones mémoires de la taille que tu à choisi dans le malloc.
a+
0
Rejoignez-nous