1

la question a surement déja été posée mais bon tant pis tongue
j'ai un tableau de char que je dois déclarer dynamiquement en mémoire avec malloc

tablo = malloc(n);

mais comment faire pour remplir mon tablo ainsi alloué avec une suite d'éléments déja définis? (genre tablo[n][m] = {{...,...,...},{...,...,...},...};

2

memcpy(tablo,(char[n][m]){{...,...,...},{...,...,...},...},n*m);
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

merci kevin, je vais tester ça smile
sinon, le compilateur me renvoie 3 warnings (ouais ok ce n'est k1 warning mais bon...tongue)
"Array subcript has type char" (x3)
dans une instruction de type tablo[tablo1[i][j]]
tablo est un void *
tablo1 est un char
i,j st des chars
pourtant aucun warning n'est retourné avec tablo[1] par ex

4

Faut que tu définisses tablo1 comme étant un unsigned char, de façon à n'avoir que des indices positifs.

5

okiouismile

6

Oups, mon memcpy était incomplet. C'est corrigé.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

7

Kevin>maintenant que tablo est déclaré correctement, comment accéder à cette variable
de façon équivalente à tablo[j][i]?

8

Il faut le déclarer comme ça : void *(*tablo)[m];

9

Bah le tableau, tout ce que tu as , c'est l'adresse de son 1er élément avec le malloc() smile

donc fait plutot, par implémentation de pointeur :

tablo[y][x] = *(tablo + x + y*x_size_tab)

l'indirection (*) te permet d'avoir la valeur de l'élement situé à cette adresse. x_size_tab c'est la taille du tableau en abscisse.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

10

pkoi parler d'indirection ???

11

bah sinon t'as juste l'adresse sans smile

ça s'appelle pas comme ça ?
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

12

jackiechan a écrit :
Il faut le déclarer comme ça : void *(*tablo)[m];

Plutôt char (*tablo)[m];...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

Ah oui.
c'est parce que plus haut, il a dit qu'il l'avait déclaré en void * (enfin, c'est ce que j'avais compris).
Mais en fait, il contient des char, tu as raison.

14

ué merci smile