Zeichenketten in Arrays füllen

  • #1
T

The Flyingdutchman

Guest
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
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? :|

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.
 
Thema:

Zeichenketten in Arrays füllen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben