Probleme initialisation tableau

Résolu
sophieeeeee Messages postés 1396 Date d'inscription   Statut Membre Dernière intervention   -  
kazouu Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai declaré un tableau comme ceci:

char * TabMes;
int taille =20;

je creer ce tableau:

TabMes=malloc(taille);
if(TabMes==NULL)
{
printf("impossible de creer le tableau\n");
}
else
{
printf("creation tableau ok\n");
}

je voudrais remplir ce tableau donc je fais:

for (int i=0;i<20;i++)
{
if (TabMes[i]==11)
{
TabMes[i ]="Celui La";
}
else
{
TabMes[i]="Pas Celui la";
}
}

quand je compile tout va bien mais quand j'exécute: une fenetre s'ouvre avec ce message:

Access violation writing location 0x00000000.

et quand j'ouvre ma fenetre d'execution il y a marqué:
impossible de crér le tableau.

Je ne comprend pas pourquoi.Pouvez vous m'aidez????
merci
A voir également:

6 réponses

kazouu Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   12
 
c'est normal tu essai de mettre des chaine de caractère dans un tableau de caractère
0
sophieeeeee Messages postés 1396 Date d'inscription   Statut Membre Dernière intervention   53
 
ben oui c'est ce que je veux faire.Pourquoi ca pose un probleme?
0
kazouu Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   12
 
parce que tu déclares un char * TabMes donc un tableau de char et non pas un tableau de char*
de plus if (TabMes[i]==11) tu test si il y a des int dedans, gros problème de typage sur ton programme
0
sophieeeeee Messages postés 1396 Date d'inscription   Statut Membre Dernière intervention   53
 
j'ai changé mon char * TabMes en char **TabMes

et modifier mes test :

for(k=0;k<taille;k++)
{

if(k==11)
{
TabMes[k]="celui la";

}
else
{
TabMes[k]="pas celui la";

}
}
mais je n'arrive toujours pas a créer mon tableau avec :
TabMes = malloc(taille);
0

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

Posez votre question
kazouu Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   12
 
déclare tout simplement un char* TabMes[taille];
comme ça tu ne fais pas de malloc inutile =)
0
sophieeeeee Messages postés 1396 Date d'inscription   Statut Membre Dernière intervention   53
 
si je pouvais je le ferai mais malheureusement je n'ai pas le choix. Il me faut un char ** TabMes.
0
kazouu Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   12
 
dans ce cas

char ** TabMes=(char**)malloc(taile*sizeof(char*));
0