1

j'arrive pas a recuperer une matrice enregistré ds un fichier


short **mat[18][25]; (double pointeur car je l'alloue dynamiquement)

ensuite je la remplis de valeur (c comme une carte)


FILE *fp = fopen("nom","wb")
fwrite(&carte, 25*sizeof(short), 18, fp);
putc(0,fp);
fputs("ext", fp);
putc(0,fp);
putc(OTH_TAG, fp);
fclose(fp);

et je la recupere par

FILE *fp = fopen("nom","rb")
fread(&carte, 25*sizeof(short), 18, fp);
fclose(fp);


mais le pb c qu'a chaque fois je recupere une matrice vide alors quelle n'etait pas vide lors de l'enregistrement
alors je ne sais pas non plus si c un pb d'enregistrement ou de lecture, mais le fichier formé n'est pas vide.

qq'un peut il m'aider ???
(je ne veux pas utiliser les fonctions de vat.h pour ça)

2

C'est ton type de données qui est n'importe quoi.

Ce qu'il faut c'est short *(mat[25]);, et pour allouer la mémoire: mat=malloc(18*25*sizeof(short));.
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

moi je l'alouais de cette maniere et ds le jeu ça marchait très bien >

mat = calloc (18, sizeof (*mat));
for (m = 0; m < 18; m++) mat[m] = calloc (25, sizeof (short));

4

Si tu veux faire ça (ce n'est pas la meilleure manière d'allouer une matrice dynamique), alors il faut mettre short **mat;, pas short **mat[18][25];.

Mais tu ne peux pas enregistrer ce type comme tu le fais. Tu n'enregistres que les 18 pointeurs, qui ne seront plus valables la prochaine fois.

Avec short *(map[25]);:
fwrite(map, 25*sizeof(short), 18, fp);
fonctionnera. (map, pas &map, parce que c'est déjà un pointeur.)
[edit]Edité par Kevin Kofler le 04-11-2001 à 20:36:01[/edit]
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é

5

j'ai du mal expliqué, mais je n'alloue pas ma variable par **mat[18][25], j'ai mis le '[18][25]' pour montrer la taille, mais sinon c definie par **mat tout cours

je vais voir, merci

6

sinon regarde dans la doc de tigcc, ya plusieurs méthodes pour faire ça
the car's on fire and there's no driver at the wheel
and the sewers are all muddied with a thousand lonely suicides
and a dark wind blows

GYBE! Dead Flag Blue

7

je crois que je vais utilisez vat.h finalement pasque rien que de faire 2 fopen("nom","r") mon prog prend 1 ko !

8

il vaut mieux je pense
c'est peut-être plus dur à utiliser mais c'est mieux