Tableau 2D, à 1 dimension connue et l'autre inconnue...

Tableau 2D, à 1 dimension connue et l'autre inconnue... - C - Programmation

Marsh Posté le 26-08-2010 à 15:00:51    

Bonjour à tous,
 
Voilà mon problème : Je souhaite extraire les données d'un fichier binaire dans un tableau de type tab[i][j].
Je connais j mais pas i.
Je souhaiterai donc faire une allocation dynamique mais sur une seule dimension.
J'arrive à faire un malloc sur un tableau 1 dim, faire un malloc pour 2 dim, mais je n'arrive pas
à faire un malloc pour i et indiquer j sans passer par un malloc.  :pt1cable:  
Il y a des trucs sur les tableaux que j'ai du zapper...
Bref si vous pouviez m'aider!
Je vous remercie.

Reply

Marsh Posté le 26-08-2010 à 15:00:51   

Reply

Marsh Posté le 26-08-2010 à 15:25:54    

Code :
  1. T (*ptr)[NUMJ];
  2. ptr = malloc(numi*sizeof(*ptr));
  3. for (i = 0; i < numi; ++i)
  4.    for (j = 0; j < NUMJ; ++j)
  5.       dosomething(ptr[i][j]);


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 26-08-2010 à 16:33:37    

Un Programmeur a écrit :

Code :
  1. T (*ptr)[NUMJ];
  2. ptr = malloc(numi*sizeof(*ptr));
  3. for (i = 0; i < numi; ++i)
  4.    for (j = 0; j < NUMJ; ++j)
  5.       dosomething(ptr[i][j]);



 
 
Merci beaucoup!
Si c'est pas trop te demander, j'aimerai pouvoir :  
Mon fichier binaire : 1000101101010110...
Prendre les 4 premiers :1000 et les mettre dans une case de mon tableau,
prendre les 4 suivants : 1011 et les mettre dans la seconde case --> comme jusqu'à la 64eme colonne
puis on repars sur une nouvelle ligne...
En gros lire un fichier bit par bit et les insérer 4 par 4 dans un tableau qui sera lui même copié dans un fichier.
J'ai donc un problème vu que la taille minimale c'est l'octet...
je suis un peu pommée... :??:  

Reply

Marsh Posté le 26-08-2010 à 16:51:32    

tu lis un octet et tu coupe comme il faut (à coup de décalages et masques) où est le souci ?


---------------
last.fm
Reply

Marsh Posté le 11-09-2010 à 08:45:50    

vas voir du côté de la fonction "read" qui est faite pour lire du binaire. Tu peux lui spécifier le nombre de bits à lire je crois.

Reply

Marsh Posté le 12-09-2010 à 00:24:43    

De http://www.opengroup.org/onlinepub [...] /read.html read() lit un nombre d'octet et non de bits...
 
La bonne solution est effectivement à base de masques:
 

Code :
  1. char byte;
  2. msb = byte >> 4;
  3. lsb = byte & 0x0f;


---------------
sheep++
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed