Zeichenketten in Arrays füllen

Dieses Thema Zeichenketten in Arrays füllen im Forum "Windows XP Forum" wurde erstellt von The Flyingdutchman, 21. Feb. 2007.

Thema: Zeichenketten in Arrays füllen Hallo zusammen Wir behandeln zur Zeit C-Pogrammieren in der Berufsschule. Ich würde gerne mehrere Zeichenketten in...

  1. Hallo zusammen

    Wir behandeln zur Zeit C-Pogrammieren in der Berufsschule. Ich würde gerne mehrere Zeichenketten in ein Array füllen.
    z.B. ein Array in das ich die Namen eines Kartenspiels einfüllen kann.
    Habe im Code ein Array Karten[51] definiert. Nun möchte ich wie gesagt die namen aller 52 Spielkarten dort hinein füllen.
    Ich nehme an, dass ich dafür den char Datentyp benötige, aber wie schreibe ich die Syntax? :|

    Wäre sehr froh um Hilfestellung

    Gruss Sebastian
     
  2. Die Richtung stimmt schon: Es gibt in C keinen Typ string. Der Typ ist Zeiger auf char ('char*';->char' ist ein einzelnes Zeichen).
    Ich weiß aber nicht, ob Dich ein zweidimensionales char-Array weit bringen würde, da die Karten ja weitere Eigenschaften haben, nicht nur Namen. Du könntest ein struct verwenden, falls das erlaubt ist (vom Stoff her). Dann hast Du ein einfaches Array für die Karten und jede Karte hat einen Wert, eine Farbe, einen Namen und was Du sonst noch brauchst. Für die Namen der Farben und Werte kannst Du zwei Arrays benutzen und die Karten so initialisieren, dass die Namen zusammengebaut werden.
    Beispiel:
    Code:
    #include <stdio.h>
    
    #define nKarten 52
    #define nFarben 4
    #define nWerte 13
    #define maxNamenLaenge 20
    
    char* namenFarben[nFarben] = {Karo, Herz, Kreuz, Pik};
    char* namenWerte[nWerte]  = {Zwei, Drei, Vier, Fuenf, Sechs, Sieben, Acht, Neun, Zehn, Bube, Dame, Koenig, Ass};
    
    typedef struct Karte {
      int farbe;
      int wert;
      int spielwert; /* etc. */
      char name[maxNamenLaenge];
    } KARTE;
    
    void initKarten(KARTE karten[]) {
      int farbe, wert;
      for(farbe = 0; farbe < nFarben; ++farbe) {
        for(wert = 0; wert < nWerte; ++wert) {
          int kartenIndex = farbe * nWerte + wert;
          karten[kartenIndex].farbe = farbe;
          karten[kartenIndex].wert = wert;
          sprintf(karten[kartenIndex].name, %s %s, namenFarben[farbe], namenWerte[wert]);
        }
      }
    }
    
    /* Namen aller Karten ausgeben (zum Testen) */
    void printKarten(KARTE karten[]) {
      int karte;
      for(karte = 0; karte < nKarten; ++karte)
        printf (%d:\t%s\n, karte, karten[karte].name);
    }
    
    int main()
    {  
      KARTE karten[nKarten];
    
      initKarten(karten);
    
      printKarten(karten);
      
      return 0;
    }
    
    BTW: Du musst eigentlich die Namen der Karten überhaupt nicht zusammen mit den Karten speichern, denn genau genommen brauchst Du die Namen erst bei der Ausgabe. Dort könntest Du aus->farbe' und->wert' zusammen mit den Arrays->namenFarben' und->namenWerte' ganz einfach den jeweils benötigten Namen zusammensetzen, z.B.:

    printf(%s %s, namenFarben[karte.farbe], namenWerte[karte.wert]);

    // Edit
    Um auf Deine Frage zurückzukommen ;D:
    Zeichenketten bekommst in char-Arrays entweder direkt beim Initialisieren:
    char bla[] = Hallo;

    oder später über Funktionen wie strcpy
    char bla[10];
    strcpy(bla, Hallo);

    oder sprintf (siehe oben) o.ä.
    Schau' Dir mal die Funktionen in->string.h' an, denn auch strcat, strncpy, strncat und andere Funktionen sind sehr nützlich.
     
Die Seite wird geladen...

Zeichenketten in Arrays füllen - Ähnliche Themen

Forum Datum
wert eines arrays über den index eines kombinationsfeldes abfragen Webentwicklung, Hosting & Programmierung 14. Nov. 2007
keine ausgabe eines arrays Windows XP Forum 18. Feb. 2007
sortieren eines mehrdimensionalen Arrays in PHP Windows XP Forum 21. Okt. 2005