2011-03-03 7 views
-1

Je me demandais s'il était possible d'imprimer un tableau 2D en C comme c'est le cas en python. Par exemple, si j'ai int array1[10][10]; alors remplissez le tableau puis printf("%li", array1) ne semble pas fonctionner. En C, y a-t-il quelque chose comme printf qui peut imprimer array1 en tant que [1, 2, 3, 4]? en python, il serait juste print(array1)imprimer un tableau 2D en C

+2

Votre titre mentionne des tableaux 2D, mais votre exemple est sur les tableaux 1D. Est-ce intentionnel? – MAK

+0

non ... désolé va corriger – tekknolagi

+1

Ceci est un nit, mais '[1, 2, 3, 4]' n'est pas comment un tableau 2D serait imprimé. –

Répondre

3

Malheureusement, il n'y a pas de façon standard de le faire. La façon d'imprimer votre tableau serait:

int array1[] = {1, 2, 3, 4}; 

size_t i = 0; 
for (i = 0; i < 4; i++){ 
    printf("%d ", array1[i]); 
} 

Notez que pour être plus correct, vous pouvez obtenir la taille du tableau en utilisant sizeof:

int array1[] = {1, 2, 3, 4}; 

int i = 0; 
for (i = 0; i < sizeof(array1)/sizeof(int); i++){ 
    printf("%d ", array1[i]); 
} 

Certaines personnes détiendrait que vous devez utiliser size_t au lieu de int pour l'index, puisque c'est ce que sizeof retourne.

EDIT: Python peut imprimer le tableau entier parce que le tableau est stocké non seulement comme un tas de chiffres en mémoire, mais comme une structure de données qui stocke d'autres informations aussi bien, comme la longueur du tableau.

+0

Y at-il une fonction que quelqu'un a écrit qui le fait de la manière la plus nette possible? – tekknolagi

+0

Il est préférable d'éviter les littéraux de taille de tableau lorsque cela est possible (principe DRY). Au lieu de cela, '#define NELTS (a) (sizeof (a)/sizeof ((a) [0])) // nombre d'éléments de tableau' et remplacez ce' 4' par 'NELTS (array1)' –

0

La réponse directe est "non" ... vous devez le coder vous-même. Et il n'est pas possible d'écrire une routine de dumper général en C car la taille des tableaux n'est pas connue.

+0

alors comment est-il fait en python ??? – tekknolagi

+0

@tekknolagi "la taille des tableaux est ... connue". Autrement dit, la taille est stockée en tant qu'attribut du tableau et peut être interrogée. Cela est vrai pour la plupart des langages de programmation modernes. –

+0

oh je vois ... alors y a-t-il une implémentation de base en C? – tekknolagi

1

Plus précisément, lors de l'impression d'un tableau 2D en C, vous aurez besoin de mettre en œuvre une double boucle for:

// dans le code pseudo

  1. tableau hypothétiquement appelé myArray
  2. obtenir la largeur de la matrice, appeler j
  3. obtenir la longueur de la matrice, appeler k
  4. pour (a = 0; un < j; a ++) {
  5. .... pour (b = 0; b < k; b ++) {
  6. ........ printf ("% d", myArray [a] [b]);
  7. ....}
  8. }
-2
// Int array [10][10]; 
for(i=0;i<10;i++) 
{ 
for(j=0;j<10;j++) 
{ 
Print("%d",array[i][j]); 
} 
} 

En utilisant ce code, vous pouvez imprimer tableau 2D en C

+0

Il ne sera même pas compiler en C. – gonczor