Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Malloc d'un tableau double entree

Nico, le jeudi 27 novembre 2003 à 19:33:11
J'ai un souci avec le prog ci dessou.En fait apres avoir mon malloc , j'essaie de stocker des valeurs , mais ca fait un segmentation fault , et je vois pas pk.Je doute de mon malloc , mais si il est faux , comment dois-je le faire ?


#include <fcntl.h>
#include <unistd.h>

typedef struct s_data
{
int nbline;
int nbchar;
int fd1;
int test2;
char **tab;
} t_data;

int my_get_line(char *file, t_data dat)
{
int line;
char *buff;

...
return (line);
}

int my_get_char(char *file, t_data dat)
{
int chars;
char *buff;

return (chars);
}


void stocktab(char *file, t_data dat)
{
char buff[1];
int x;
int y;

## ARRIVE LA CA SEGFAULTE ##

**dat.tab = 0;
#OU

dat.tab[0][0] = 0;

#######
}

int main(int ac, char **av)
{
t_data dat;

dat.fd1 = open(av[1], O_RDONLY);
dat.nbline = my_get_line(av[1], dat);
dat.nbchar = my_get_char(av[1], dat);
dat.tab = malloc((dat.nbline * dat.nbchar) * sizeof(**dat.tab));
stocktab(av[1], dat);
}
Répondre à Nico  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
CyberLudo2013, le vendredi 28 novembre 2003 à 00:42:32
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.
Répondre à CyberLudo2013

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
ilimo, le vendredi 28 novembre 2003 à 08:36:23
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..
Répondre à ilimo

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ludo, le vendredi 28 novembre 2003 à 13:50:51
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 ?

@++
Répondre à Ludo

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Nico, le vendredi 28 novembre 2003 à 14:04:02
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
Répondre à Nico

5


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
ilimo, le vendredi 28 novembre 2003 à 14:21:10
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...
Répondre à ilimo

6


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 ilimo, le vendredi 28 novembre 2003 à 14:36:00
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..
Répondre à ilimo
[java]vecteur -> tableau double entrée (Résolu)Bonjour, Je fait un vecteur de tableau de double du genre : double[] tab= new double[7]; Vector v = new Vector; v.addElement(tab); Tout ceci dans l'idée dans uen boucle, et à la sortie j'obtient donc mon vecteur plein de tableau de double.... www.commentcamarche.net/forum/affich-3479042-java-vecteur-tableau-double-entree
Inverser les éléments d'un tableau -Récursivité-Voici 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 ... www.commentcamarche.net/faq/sujet-8811-inverser-les-elements-d-un-tableau-recursivite
Acer X193W SilverX 193 193 W 193W 193W ,Ecran plat, 19 pouces, Haut-parleurs intégrés: Non,Entrée vidéo:D-sub,Entrées vidéo multiples:Double,Entrée DVI/VGA:VGA,Angle vertical de vision:160,Angle horizontal de vision:160 degrés,Luminosité:300 nit (cd/m2),Rapport... www.commentcamarche.net/guide-achat/acer-x193w-silver-1002784-fiche-technique
Eviter les doublons dans ExcelEviter les doublons lors d'un encodage dans un colonne de feuille excel: prendre le format conditionnel sur le première cellule sous les titres (par ex A2) choisir la formule suivante : =NB.SI($A$2:$A$21;A2)>1 mettre là la couleur de fond... www.commentcamarche.net/faq/sujet-1258-eviter-les-doublons-dans-excel
Sed - Insérer un espace entre chaque lettreInsérer un espace entre chaque lettre $ echo -e "bonjour la vie\net bonjour à toi" | sed 's/./& /g' b o n j o u r l a v i e e t b o n j o u r à t o iL'inconvénient c'est que l'espace naturel entre chaque mot est doublé. Pour pallier à ce... www.commentcamarche.net/faq/sujet-6009-sed-inserer-un-espace-entre-chaque-lettre
Aide Structure en C (Résolu)Bonjour, voila g un gros prob d'allocation memoire pour un tableau double champ situé ds une sructure. G definit ma structure ds un fichier .h de la facon suivante : typedef struct image_N { int **tableau; }image_N image_N saisie( ); puis ds mon... www.commentcamarche.net/forum/affich-2463589-aide-structure-en-c
Branchement (Résolu)Bonjour, J'ai acheté un adaptateur numérique simple tuner, double entrée antenne et double entrée péritel, le vendeur m'a expliqué que grace à l'entrée et sortie je pourrai continuer à regarder la télé en numérique et enregistrer en... www.commentcamarche.net/forum/affich-4086567-branchement
Excel : Recherche double entrées (Résolu)Je souhaite faire une recherche double. Par exemple : J'ai un tableau de 3 colonnes : Prénom, Nom puis Code client. Je veux connaitre le code client en recherchant par le nom et le prénom (au cas ou il y ait 2 fois le même prénom dans le tableau)... www.commentcamarche.net/forum/affich-5845220-excel-recherche-double-entrees
Viewsonic VX2255WMB BlackVX 2255 2255 WMB 2255WMB 2255WMB ,Ecran plat, 22 pouces, Haut-parleurs intégrés: Oui,Enceintes intégrées,Entrée vidéo:D-sub, DVI-D,Couleur:Black,Entrées vidéo multiples:Double,Entrée DVI/VGA:DVI/VGA,Angle vertical de vision:160,Angle horizontal de... www.commentcamarche.net/guide-achat/viewsonic-vx2255wmb-black-906767-fiche-technique
Samsung SyncMaster 2253BW Black2253 BW ,Ecran plat, 22 pouces, Haut-parleurs intégrés: Non,Consommation:45 W,Entrée vidéo:D-sub, DVI-D,Couleur:Black,Entrées vidéo multiples:Double,Entrée DVI/VGA:DVI/VGA,Angle vertical de vision:160,Temps de réponse:5 total, ms,Rapport... www.commentcamarche.net/guide-achat/samsung-syncmaster-2253bw-black-1075355-fiche-technique
Samsung SyncMaster 2232BW Black2232 BW ,Ecran plat, 22 pouces, Haut-parleurs intégrés: Non,Consommation:50 W,Divers: ,Fabricant:Samsung,Dimensions (LxHxP):51.7x41.9x21 cm,Couleur:Black,Entrée vidéo:D-Sub, DVI-D,Entrées vidéo multiples:Double,Entrée DVI/VGA:DVI/VGA,Angle... www.commentcamarche.net/guide-achat/samsung-syncmaster-2232bw-black-972502-fiche-technique
Le double clic le plus cher au monde(Paris - Relaxnews) - 3,1 milliards de dollars. C'est la somme qu'a déboursé Google pour acquérir la régie publicitaire DoubleClick, également convoitée par Microsoft. La société DoubleClick, qui agit comme intermédiaire entre annonceurs, agences de... www.commentcamarche.net/actualites/le-double-clic-le-plus-cher-au-monde-2883016-actualite.php3
Langage C++ - Les tableaux 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 à gérer. Heureusement, le... www.commentcamarche.net/cpp/cpptab.php3
PHP - Les variables Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage PHP peuvent être de trois types : scalaires tableaux tableaux associatifs Quelque soit... www.commentcamarche.net/php/phpvar.php3
Langage C - Les tableaux 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 à gérer. Heureusement, le... www.commentcamarche.net/c/ctab.php3
Toutes les réponses pour « Malloc d'un tableau double entree »