web-dev-qa-db-fra.com

Comment imprimer le tableau?

int main() {  
  int my array[3][3] =
    10, 23, 42,    
    1, 654, 0,  
    40652, 22, 0  
  };  

  printf("%d\n", my_array[3][3]);  
  return 0;
}

Je ne parviens pas à imprimer le tableau. Des idées pourquoi? Je suis un programmeur débutant, tous les conseils sont les bienvenus. 

30
Shankar Kumar

Ce que vous faites, c'est imprimer la valeur du tableau à l'endroit [3] [3], qui n'est pas valide pour un tableau 3by3;.

for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 3; j++) {
        printf("%d ", array[i][j]);
    }
    printf("\n");
} 

Cela l’imprimera au format suivant

10 23 42
1 654 0
40652 22 0

si vous voulez un formatage plus précis, vous devrez changer la façon dont le printf est formaté.

24
twain249

Il n'y a pas de propriété .length dans C. La propriété .length peut uniquement être appliquée à des tableaux dans des langages de programmation orientée objet (OOP). La propriété .length est héritée de la classe d'objet; la classe dont héritent toutes les autres classes et objets dans un langage OOP. En outre, on utiliserait .length-1 pour renvoyer le numéro du dernier index d'un tableau; en utilisant seulement la longueur. retournera la longueur totale du tableau.

Je suggérerais quelque chose comme ça:

int index;
int jdex;
for( index = 0; index < (sizeof( my_array ) / sizeof( my_array[0] )); index++){
   for( jdex = 0; jdex < (sizeof( my_array ) / sizeof( my_array[0] )); jdex++){
        printf( "%d", my_array[index][jdex] );
        printf( "\n" );
   }
}

La ligne (sizeof (my_array)/sizeof (my_array [0])) vous donnera la taille du tableau en question. La propriété sizeof renverra la longueur en octets. Vous devez donc diviser la taille totale du tableau en octets par le nombre d'octets composant chaque élément. Chaque élément occupe 4 octets car chaque élément est de type int, respectivement. Le tableau a une taille totale de 16 octets et chaque élément est de 4 octets. Par conséquent, 16/4 donne 4 le nombre total d’éléments dans votre tableau car l’indexation commence à 0 et non à 1.

11
Jake

On dirait que vous avez une faute de frappe sur votre tableau, cela devrait se lire:

int my_array[3][3] = {...

Vous n'avez pas le _ ou le {.

De plus, my_array[3][3] est un emplacement non valide. Étant donné que les ordinateurs commencent à compter à 0, vous accédez à la position 4. (Les tableaux sont bizarres comme ça).

Si vous voulez juste le dernier élément:

printf("%d\n", my_array[2][2]);

Si vous voulez le tableau entier:

for(int i = 0; i < my_array.length; i++) {
  for(int j = 0; j < my_array[i].length; j++)
    printf("%d ", my_array[i][j]);
  printf("\n");
}
3
Jon Egeland

Vous pouvez essayer ceci:

#include <stdio.h>

int main() 
{  
  int i,j;
  int my_array[3][3] ={10, 23, 42, 1, 654, 0, 40652, 22, 0};
  for(i = 0; i < 3; i++) 
  {
       for(j = 0; j < 3; j++) 
       {
         printf("%d ", my_array[i][j]);
       }
    printf("\n");
  } 
  return 0;
}
1
user4309687