Probleme initialisation tableau

Résolu
sophieeeeee Messages postés 1396 Date d'inscription   Statut Membre Dernière intervention   -  
kazouu Messages postés 466 Statut Membre -
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
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. kazouu Messages postés 466 Statut Membre 12
     
    c'est normal tu essai de mettre des chaine de caractère dans un tableau de caractère
    0
  2. 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
  3. kazouu Messages postés 466 Statut Membre 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kazouu Messages postés 466 Statut Membre 12
     
    déclare tout simplement un char* TabMes[taille];
    comme ça tu ne fais pas de malloc inutile =)
    0
    1. 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
  7. kazouu Messages postés 466 Statut Membre 12
     
    dans ce cas

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