Malloc d'un tableau double entree
Fermé
Nico
-
27 nov. 2003 à 19:33
ilimo Messages postés 32 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 2 juin 2006 - 28 nov. 2003 à 14:36
ilimo Messages postés 32 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 2 juin 2006 - 28 nov. 2003 à 14:36
A voir également:
- Malloc d'un tableau double entree
- Double ecran - Guide
- Whatsapp double sim - Guide
- Tableau word - Guide
- Code ascii tableau - Guide
- Tableau croisé dynamique - Guide
6 réponses
ilimo
Messages postés
32
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
2 juin 2006
4
28 nov. 2003 à 08:36
28 nov. 2003 à 08:36
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..
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..
ilimo
Messages postés
32
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
2 juin 2006
4
28 nov. 2003 à 14:21
28 nov. 2003 à 14:21
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...
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...
ilimo
Messages postés
32
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
2 juin 2006
4
28 nov. 2003 à 14:36
28 nov. 2003 à 14:36
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..
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..
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?
@++
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 ?
@++