Wie drucke ich das Array?

Lesezeit: 4 Minuten

Benutzeravatar von Shankar Kumar
Shankar Kumar

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 drucken. Irgendwelche Ideen warum? Ich bin ein Programmieranfänger, daher sind Ratschläge willkommen.

  • Fehlt ein Teil des Codes? Es sieht so aus, als ob Ihnen eine öffnende Klammer im Array sowie ein _ in der my_array-Deklaration fehlen

    – Austin Brunkhorst

    15. März 2012 um 19:41 Uhr

  • Nur ein Ratschlag: Sie sollten die Sprache angeben, in der Sie codieren, um eine geeignete Lösung besser zu identifizieren 🙂

    – Null

    15. März 2012 um 19:42 Uhr

  • Oh, und Sie sollten uns den Fehler mitteilen, den Sie erhalten, da in diesem Code viel Platz für Fehler ist 😉

    – Niklas B.

    15. März 2012 um 19:43 Uhr

  • Großer Hinweis: Array-Indizes beginnen bei 0. my_array[3][3] versucht, die 4. Zelle in der 4. Zeile Ihres Arrays zu erhalten. Was ist falsch mit diesem Bild?

    – chao

    15. März 2012 um 19:43 Uhr

Was Sie tun, ist den Wert im Array an Ort und Stelle zu drucken [3][3]was für ein 3by3-Array ungültig ist, müssen Sie alle Spots 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 von printf ändern.

  • Wenn Sie in C++ programmieren, können Sie auch verwenden cout Anstatt von printf

    – trev9065

    15. März 2012 um 19:46 Uhr

  • @ trev9065 stimmt, aber er hat es benutzt printf und hatte keine Sprache angegeben, als ich antwortete, also blieb ich dabei printf.

    – twain249

    15. März 2012 um 19:47 Uhr

Jakes Benutzeravatar
Jake

In C gibt es keine .length-Eigenschaft. Die .length-Eigenschaft kann nur auf Arrays in objektorientierten Programmiersprachen (OOP) 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 .length verwenden, 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 Ihnen die Größe des betreffenden Arrays an. Die Eigenschaft sizeof gibt die Länge in Bytes zurück, also muss man die Gesamtgröße des Arrays in Bytes durch die Anzahl der Bytes jedes Elements dividieren, jedes Element nimmt 4 Bytes ein, da jedes Element vom Typ int ist. Das Array hat eine Gesamtgröße von 16 Bytes und jedes Element hat 4 Bytes, sodass 16/4 4 der Gesamtzahl der Elemente in Ihrem Array ergibt, da die Indizierung bei 0 und nicht bei 1 beginnt.

  • Dies würde nicht funktionieren, wenn das Array seitdem nicht quadratisch ist jdex Schleife mit der Größe des äußeren Arrays und nicht der inneren.

    – JaviMerino

    14. Mai 2014 um 18:04 Uhr

Es sieht so aus, als ob Sie einen Tippfehler in Ihrem Array haben, es sollte lauten:

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

Du hast die nicht _ oder der {.

Ebenfalls my_array[3][3] ist ein ungültiger Standort. Da fangen Computer an zu zählen 0Sie greifen auf die Position zu 4. (Arrays sind so seltsam).

Wenn Sie nur das letzte Element wollen:

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

Wenn Sie das gesamte Array möchten:

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

Benutzeravatar von user4309687
Benutzer4309687

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

Wenn Sie das Array wie eine 2D-Liste in Python drucken möchten:

#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++)
  {
      if (i == 0) {
          printf("[");
      }
      printf("[");
      for(j = 0; j < 3; j++)
      {
         printf("%d", my_array[i][j]);
         if (j < 2) {
             printf(", ");
         }
      }
    printf("]");
    if (i == 2) {
        printf("]");
    }

    if (i < 2) {
        printf(", ");
    }
  }
  return 0;
}

Ausgabe wird sein:

[[10, 23, 42], [1, 654, 0], [40652, 22, 0]]

  • Gibt es eine Möglichkeit, ein ganzes Array zu drucken und nicht nur den Inhalt des Arrays zu drucken, indem man es durchläuft?

    – Mahmud Gabr

    6. September 2021 um 15:06 Uhr

Benutzeravatar von Abhimanyu KK
Abhimanyu KK

Probier diese. Nur ein paar Zeilen Code. Haben Sie keine Angst vor den Hinweisen (für Anfänger).

void PrintArray(uint8_t *data_arr, uint8_t data_length)
{
    while (data_length--)
    {
        printf("0x%02x ", *data_arr);
        *data_arr++;
    }
    printf("\n");
}

Ändern Sie die printf()-Anweisung entsprechend Ihrer Verwendung. Wenn Sie als Zeichen drucken müssen:

printf("%c", (char)*data_arr);

Für Dezimalwerte:

printf("%d ", (uint8_t) *data_arr);

  • Gibt es eine Möglichkeit, ein ganzes Array zu drucken und nicht nur den Inhalt des Arrays zu drucken, indem man es durchläuft?

    – Mahmud Gabr

    6. September 2021 um 15:06 Uhr

1407830cookie-checkWie drucke ich das Array?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy