Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2923 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Tableau 2 dimension 1 dimension connue et l'autre inconnue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau 2 dimension 1 dimension connue et l'autre inconnue

n°2225662
imou222
Posté le 22-04-2014 à 02:08:29  profilanswer
 

bonsoir ,
je veux crée un tableau a deux dimension dont une dimension est connue dim et l'autre non nombrObjPris.
 
j'ai fait ceci :

Code :
  1. typedef struct {
  2.     int **objPris;
  3. }ind;
  4. int nombrObjPris;
  5. p_ind->objPris = (int ** ) chk_malloc (dim * sizeof (int));
  6. for (i=0;i<dim;i++)
  7. {
  8. p_ind->objPris[i]=(int *)chk_malloc(nombrObjPris* sizeof(int));
  9. }
  10. for(i=0;i<dim;i++)
  11.     for(j=0;j<nombrObjNonPris;j++)
  12.    {x->objNonPris[i][j]=i+j; printf("%d \n",x->objNonPris[i][j]);}

 
 
le code m'affiche pas une erreur mais il ne fonctionne pas. help plz


Message édité par imou222 le 22-04-2014 à 02:11:00
mood
Publicité
Posté le 22-04-2014 à 02:08:29  profilanswer
 

n°2225664
Farian
Posté le 22-04-2014 à 06:03:36  profilanswer
 

Bonjour !
 
La première allocation est incorrecte (mais l'erreur risque de ne se manifester qu'en 64 bits) : le tableau p_ind->objPris est un tableau de (int *), la ligne devrait donc être

Code :
  1. p_ind->objPris = (int ** ) chk_malloc (dim * sizeof (int *));


 
Bonne continuation !


Message édité par Farian le 22-04-2014 à 06:04:14
n°2225744
imou222
Posté le 22-04-2014 à 15:40:24  profilanswer
 

j'ai corriger les erreurs mais le code ne fonctionne pas :pt1cable:  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM 3
  4. int nombrObjPris;
  5. typedef struct {
  6.     int **objPris;
  7. }ind;
  8. void* chk_malloc(size_t size)
  9. /* Wrapper function for malloc(). Checks for failed allocations. */
  10. {
  11.     void *return_value = malloc(size);
  12.     if(return_value == NULL)
  13. printf("Selector: Out of memory." );
  14.     return (return_value);
  15. }
  16. ind* create_ind()
  17. {
  18.     ind *p_ind; int i;
  19. p_ind->objPris = (int ** ) chk_malloc (DIM * sizeof (int*));
  20. for (i=0;i<DIM;i++)
  21. {
  22. p_ind->objPris[i]=(int *)chk_malloc(nombrObjPris* sizeof(int));
  23. }
  24. }
  25. int main(void)
  26. {
  27. int i, j; ind *p_ind;
  28. for(i=0;i<DIM;i++)
  29.     for(j=0;j<nombrObjPris;j++)
  30.    {p_ind->objPris[i][j]=i+j; }
  31. printf("%d \n",p_ind->objPris[i][j]);
  32. return 0;
  33. }


Message édité par imou222 le 22-04-2014 à 15:40:59
n°2225746
Farian
Posté le 22-04-2014 à 16:23:31  profilanswer
 

Le "printf" de la ligne 44 est en dehors des boucle "for" donc utilise pour u la valeur DIM et pour j la valeur nombrObjPris, ce qui provoque une lecture en dehors de l'espace qui a été alloué, et peut générer une erreur de segmentation (valgrind vous l'aurait dit :) )
 
Bonne continuation !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Tableau 2 dimension 1 dimension connue et l'autre inconnue

 

Sujets relatifs
Aide button de recherche sur un tableauRegroupage tableau par mois et par année en SQL
Récupérer variable colonne tableau BatchTableau Statique en C++
affichage du texte dans un tableau latexLire données pas à pas dans un fichier et stocker dans variables
Incompatibilité de type tableau[C++] manipulation de tableau a l'aide des references ?
[PHP] tableau videTableau 2D, à 1 dimension connue et l'autre inconnue...
Plus de sujets relatifs à : Tableau 2 dimension 1 dimension connue et l'autre inconnue


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR