Rechercher : dans
Par :

Initialisation tableau C

Dernière réponse le 9 jun 2008 à 16:28:01 sophieeeeee, le 9 jun 2008 à 14:35:41 
 Signaler ce message aux modérateurs

Bonjour,
j'ai un tableau déclarer comme ceci:

char ** TabMes;
TabMes = calloc(20,sizeof(char*));
je voudrais l'initialiser comme ceci mais ca ne marche pas.quellqu'un aurait il une idée?
TabMes[20]={
"chaine1",
"chaine2",
"chaine3",
"chaine4",
"chaine5",
"chaine6",
"chaine7",
"chaine8",
"chaine9",
"chaine10",
"chaine11",
"chaine12",
"chaine13",
"chaine14",
"chaine15",
"chaine16",
"chaine17",
"chaine18",
"chaine19",
"chaine20"
};

merci

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « initialisation tableau C » dans :
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
Langage C - Les tableaux VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...

1

shuya89, le 9 jun 2008 à 14:39:32

Il faut faire :TabMes[20]={"chaine1","chaine2","chaine3","chaine4"....."chaine17","chaine18","chaine19","chaine20"};

Répondre à shuya89

2

sophieeeeee, le 9 jun 2008 à 14:42:35

Mais c'est ce que je fais non?Je crois bien que si.

Répondre à sophieeeeee

3

shuya89, le 9 jun 2008 à 14:51:09

Essai comme je t'ai dit

Répondre à shuya89

4

sophieeeeee, le 9 jun 2008 à 14:57:22

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 : '{'

Répondre à sophieeeeee

5

Char Snipeur, le 9 jun 2008 à 15:03:49

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. Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur

6

sophieeeeee, le 9 jun 2008 à 15:08:38

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...

Répondre à sophieeeeee

7

sophieeeeee, le 9 jun 2008 à 15:09:27

Excuse :
TabMes=(const char**){"chaine0",...};

Répondre à sophieeeeee

8

Char Snipeur, le 9 jun 2008 à 15:19:40

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. Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur

9

sophieeeeee, le 9 jun 2008 à 15:23:16

Ok merci beaucoup pour votre aide mais ca ne marche toujours pas.Tempi.

Répondre à sophieeeeee

10

sophieeeeee, le 9 jun 2008 à 15:25:24

Ce que je ne comprends pas c'est pourquoi TabMes[2]="essai"; fonctionne alors que le reste non

Répondre à sophieeeeee

11

Char Snipeur, le 9 jun 2008 à 15:39:38

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. Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur

12

sophieeeeee, le 9 jun 2008 à 15:48:23

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>...

Répondre à sophieeeeee

13

 Char Snipeur, le 9 jun 2008 à 16:28:01

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. Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur
Collection CommentÇaMarche.net