|
|
|
|
La ligne contenant le malloc effectivement me semble bizarre. Mais l'erreur principale de ce programme c'est que deux "*" devant une variable ne signifie pas tableau a deux dimension mais poiteur poitant sur un autre pointeur. Donc, il suffit d'une seul étoile. C'est probalement pour ca que ton programme plante a l'éxecution (et pas a la compilation). Après ca ne t'empêche pas d'assigner des valeurs sur deux dimensions dans ton pointeurs. |
|
bonjour,
1- au lieu de : dat.tab = malloc((dat.nbline * dat.nbchar) * sizeof(**dat.tab)); 2- essaies : dat.tab = (char**)malloc(dat.nbline * dat.nbchar * sizeof(*char)); 3- dans ta fonction main : a- le 2° argument est un double pointeur( char **av ) b- tandis que tu le passes en 1° argument pour les autres fonctions c- mieux vaut respecter l'ordre des passages d- en plus ce premier argument pour les autres fonctions, est un simple pointeur( char *file ) e- il faut passer des arguments du même type d'une fonction à une autre 4- Dans ta fonction " stocktab " il y une mise à zero : ::: **dat.tab = 0; : non pour les doubles étoiles ::: dat.tab[0][0] = 0; : non car ce n'est pas un tableau à 2 dimensions 5- essaies : dat.tab[0] = NULL; ::: c'est un tableau de pointeurs sur des pointeurs 6- en ce qui concerne " dat.fd1 = open(av[1], O_RDONLY); " il me semble que " open " c'est pour ouvrir des fichiers.. tandis qu'ici on a un tableau " av[1] ". je ne saisis pas exactement ce que tu veux faire.. donc je n'ai pas d'idée.. 7- j'espère que ça aide.. |
re salut !
Franchement au lieu d'essayer de débbugguer du code, dont on sait même pas ce a quoi il devait servir (et qui marche pas), dis nous plutot directement ce que tu voulais faire exactement ? @++ |
Non mais c bon , merci de vos reponses.
EN fait pr moi comme la memoire est lineaire , malloquer un tableau de 4*5 ou autre , ca revenait tjrs a malloquer 20 cases , donc je me disais que malloc de 20 ca devait marcher. Bref ca marche maintenant , merci |
|
très bien ..
la chose est simple : 1- ecrire un entier type " int " dans un fichier texte : "save.txt" 2- relire ce même entier dans un seconde temps pour s'en servir.. 1- a- pour ecrire : voici mon code : void WriteToFile( int a = 1234) { FILE *ff; ff = fopen("save.txt", "w"); char st[5]; itoa(a, st, 10); fwrite (st , 1 , 4 , ff); fclose(ff); } b- le probleme c'est que ça efface le contenu de tout mon fichier save, et je voudrais ajouter uniquement au début en effaçant la première ligne.. 2- a- pou lire : voici mon code : void ReadFile(int b = 0) { FILE *fread; fread = fopen("save.txt", "r"); char Txt[255]; fgets(Txt, 255, fread); b = atoi(Txt); fclose(fread); } une idée ?.. merci... |
|
désolé, je me suis trompé de section..
je sais pas pourquoi j'ai reçu une réponse sur ce message.. en pensant que ça concernait mon message, je ai répondu.. une erreur.. désolé encoe.. |