it-swarm.com.de

Wie drucke ich das Array aus?

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;
}

Ich kann das Array nicht zum Ausdrucken bringen. Ich bin ein Anfangsprogrammierer, also werden alle Ratschläge geschätzt. 

30
Shankar Kumar

Sie drucken den Wert im Array an Stelle [3] [3], was für ein 3by3-Array ungültig ist. Sie müssen alle Punkte durchlaufen und drucken.

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

Dadurch wird es im folgenden Format gedruckt

10 23 42
1 654 0
40652 22 0

wenn Sie eine genauere Formatierung wünschen, müssen Sie die Formatierung der printf ändern.

24
twain249

Es gibt keine .length-Eigenschaft in C. Die .length-Eigenschaft kann nur auf Arrays in objektorientierten Programmiersprachen (OOP-Sprachen) angewendet werden. Die Eigenschaft .length wird von der Objektklasse geerbt. die Klasse, von der alle anderen Klassen und Objekte in einer OOP - Sprache erben. Außerdem würde man .length-1 verwenden, um die Nummer des letzten Index in einem Array zurückzugeben. Wenn Sie nur die Länge eingeben, wird die Gesamtlänge des Arrays zurückgegeben.

Ich würde so etwas vorschlagen:

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" );
   }
}

Die Zeile (sizeof (my_array)/sizeof (my_array [0])) gibt die Größe des betreffenden Arrays an. Die sizeof -Eigenschaft gibt die Länge in Bytes zurück, daher muss man die Gesamtgröße des Arrays in Bytes durch die Anzahl Bytes dividieren, aus denen jedes Element besteht. Jedes Element benötigt 4 Bytes, da jedes Element vom Typ int ist. Das Array hat eine Gesamtgröße von 16 Bytes und jedes Element hat 4 Bytes, so dass 16/4 4 die Gesamtzahl der Elemente in Ihrem Array ergibt, da die Indizierung bei 0 und nicht bei 1 beginnt.

11
Jake

Es sieht so aus, als hätten Sie einen Tippfehler in Ihrem Array. Es sollte lauten:

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

Sie haben keinen _ oder {.

Auch my_array[3][3] ist ein ungültiger Ort. Da Computer mit 0 zu zählen beginnen, greifen Sie auf Position 4 zu. (Arrays sind so komisch).

Wenn Sie nur das letzte Element wünschen:

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

Wenn Sie das gesamte Array wünschen:

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

Sie könnten dies versuchen:

#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