Initialisation tableau C
Fermé
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
-
9 juin 2008 à 14:35
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 - 24 sept. 2013 à 18:39
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 - 24 sept. 2013 à 18:39
A voir également:
- Initialisation tableau C
- Tableau croisé dynamique - Guide
- Code ascii tableau - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
15 réponses
shuya89
Messages postés
470
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
28 novembre 2014
39
9 juin 2008 à 14:39
9 juin 2008 à 14:39
il faut faire :TabMes[20]={"chaine1","chaine2","chaine3","chaine4"....."chaine17","chaine18","chaine19","chaine20"};
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 14:42
9 juin 2008 à 14:42
Mais c'est ce que je fais non?Je crois bien que si.
shuya89
Messages postés
470
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
28 novembre 2014
39
9 juin 2008 à 14:51
9 juin 2008 à 14:51
essai comme je t'ai dit
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 14:57
9 juin 2008 à 14:57
quand je fais :
TabMes[20]={"chaine1","chaine2","chaine3","chaine4","chaine5","chaine6","chaine7","chaine8","chaine9","chaine10","chaine11","chaine12","chaine13","chaine14","chaine15","chaine16","chaine17","chaine18","chaine19","chaine20"};
le compilateur me met comme erreur: error C2059: syntax error : '{'
TabMes[20]={"chaine1","chaine2","chaine3","chaine4","chaine5","chaine6","chaine7","chaine8","chaine9","chaine10","chaine11","chaine12","chaine13","chaine14","chaine15","chaine16","chaine17","chaine18","chaine19","chaine20"};
le compilateur me met comme erreur: error C2059: syntax error : '{'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 juin 2008 à 15:03
9 juin 2008 à 15:03
l'iitiallisation statique, ne fonctionne qu'avec les variables constante. Soit tu fait :
const char** TabMes={"haine1",...};
soit tu fait :
char** TabMes;
TabMes=(const char**){"chaine 1",...};
Il est inutile d'allouer de l'espace pour TabMes avec alloc, car tu le fait pointé vers une "variable" en const char** (donc sur la pile je crois)
Note pour shuya, en C les retours à la lignes ont très peut d'effet : à par dans une chaine de caractère, je ne connait aucun cas où ça change quelque chose d'en mettre ou non.
const char** TabMes={"haine1",...};
soit tu fait :
char** TabMes;
TabMes=(const char**){"chaine 1",...};
Il est inutile d'allouer de l'espace pour TabMes avec alloc, car tu le fait pointé vers une "variable" en const char** (donc sur la pile je crois)
Note pour shuya, en C les retours à la lignes ont très peut d'effet : à par dans une chaine de caractère, je ne connait aucun cas où ça change quelque chose d'en mettre ou non.
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 15:08
9 juin 2008 à 15:08
j'ai changé comme tu m'a dis :
TabMes[20]=(const char**){"chaine0",
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19"
};
mais j'ai toujours cette erreur:
error C2059: syntax error : '{'
Je vais devenir folle...
TabMes[20]=(const char**){"chaine0",
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19"
};
mais j'ai toujours cette erreur:
error C2059: syntax error : '{'
Je vais devenir folle...
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 15:09
9 juin 2008 à 15:09
excuse :
TabMes=(const char**){"chaine0",...};
TabMes=(const char**){"chaine0",...};
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 juin 2008 à 15:19
9 juin 2008 à 15:19
essai :
const char** tmp={"chaine0","chaine1"...19"};
puis
TabMes=(char**)tmp
Quoi, que c'est ma faute, je te dis d'essayer un transtypage qui n'est pas bon {"...",...} c'est un const char**. Donc, en fait c'était ça qu'il fallait essayer :
TabMes=(char**){"chaine0",
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19"
};
La solution avec tmp fonctionne. Si ce n'est pas le cas, ça viens du compilateur, car chez moi ça foncionne.
const char** tmp={"chaine0","chaine1"...19"};
puis
TabMes=(char**)tmp
Quoi, que c'est ma faute, je te dis d'essayer un transtypage qui n'est pas bon {"...",...} c'est un const char**. Donc, en fait c'était ça qu'il fallait essayer :
TabMes=(char**){"chaine0",
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19"
};
La solution avec tmp fonctionne. Si ce n'est pas le cas, ça viens du compilateur, car chez moi ça foncionne.
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 15:23
9 juin 2008 à 15:23
ok merci beaucoup pour votre aide mais ca ne marche toujours pas.Tempi.
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 15:25
9 juin 2008 à 15:25
ce que je ne comprends pas c'est pourquoi TabMes[2]="essai"; fonctionne alors que le reste non
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 juin 2008 à 15:39
9 juin 2008 à 15:39
TabMes[2]="essai" fonctionne d'après ce que dit ton compilateur car il n'y a pas de d'accolade '{'.
Soit ton compilateur n'accepte pas ce type de déclaration de constante, soit il n'accepte pas l'accolade (mais dans ce cas là il devrais se manifester beaucoup plus tôt).
En tout cas, avec gcc ça fonctionne.
essai la chose toute simple suivante :
int const entierN[]={0,1,2,3,4,5,6,7,8,9 };
Si ça ne fonctionne toujours pas, il doit ya voir un problème ailleurs.
Soit ton compilateur n'accepte pas ce type de déclaration de constante, soit il n'accepte pas l'accolade (mais dans ce cas là il devrais se manifester beaucoup plus tôt).
En tout cas, avec gcc ça fonctionne.
essai la chose toute simple suivante :
int const entierN[]={0,1,2,3,4,5,6,7,8,9 };
Si ça ne fonctionne toujours pas, il doit ya voir un problème ailleurs.
sophieeeeee
Messages postés
1395
Date d'inscription
jeudi 5 juin 2008
Statut
Membre
Dernière intervention
18 septembre 2008
53
9 juin 2008 à 15:48
9 juin 2008 à 15:48
j'ai essayer avec des parenthese:
TabMes[20]=("chaine0",
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19"
);
pour je ne sais qu'elle raison je n'ai plus d'erreur mais quand je veux afficher mon tableau voici ce que 'jai comme resultat :
<null>
<null>
<null>...
TabMes[20]=("chaine0",
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19"
);
pour je ne sais qu'elle raison je n'ai plus d'erreur mais quand je veux afficher mon tableau voici ce que 'jai comme resultat :
<null>
<null>
<null>...
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 juin 2008 à 16:28
9 juin 2008 à 16:28
si TabMes est de type char** c'est normal, tu affectes seulement la valeur 20.
Attention, TabMes[]= est différent de TabMes= !
Et TabMes[]={}, c'est faux alors que TabMes={} c'est juste.
Attention, TabMes[]= est différent de TabMes= !
Et TabMes[]={}, c'est faux alors que TabMes={} c'est juste.
Antoine Crochet-Damais
Messages postés
16
Date d'inscription
vendredi 11 mars 2011
Statut
Webmaster
Dernière intervention
8 janvier 2014
1 240
Modifié par Antoine Crochet-Damais le 13/09/2013 à 15:26
Modifié par Antoine Crochet-Damais le 13/09/2013 à 15:26
Tu peux trouver peut-être une réponse à la question ici : Initialiser un tableau en C.
Plusieurs solutions y sont évoquées.
Plusieurs solutions y sont évoquées.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
13 sept. 2013 à 15:29
13 sept. 2013 à 15:29
Jolie déterrage de message.
nar6du14
Messages postés
459
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
7 décembre 2013
64
24 sept. 2013 à 18:39
24 sept. 2013 à 18:39
c'est simple
char** tab = (char** )malloc( 20* sizeof(char*));
memset(tab, 0, 20 * sizeof(char*)); // faut que tes pointeurs soient tous à nul pour ne pas aller écrire ailleurs
//tu crées ensuite un tableau statique
TabMes[20]={
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19",
"chaine20"
};
//initialiser tout ça
void initialize(char** f, int size_of_f, char** value)
{
int i = 0;
int len = 0;
for(i = 0; i < size_of_f; i++)
{
len = strlen( value [ i ] );
f [ i ] = (char *)malloc( len );
memset( f [ i ], value [ i ], len );
}
}
char** tab = (char** )malloc( 20* sizeof(char*));
memset(tab, 0, 20 * sizeof(char*)); // faut que tes pointeurs soient tous à nul pour ne pas aller écrire ailleurs
//tu crées ensuite un tableau statique
TabMes[20]={
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19",
"chaine20"
};
//initialiser tout ça
void initialize(char** f, int size_of_f, char** value)
{
int i = 0;
int len = 0;
for(i = 0; i < size_of_f; i++)
{
len = strlen( value [ i ] );
f [ i ] = (char *)malloc( len );
memset( f [ i ], value [ i ], len );
}
}