"String-Array" in C

#3092683
Lesenswert?

Hallo zusammen,

vielleicht kann mich mal jemand vom Schlauch schubsen.. bekanntlich kann 
mit dem folgenden Code auf char arrays in C zugegriffen werden:
1
char text[50];
2
strcpy(text, "Hallo Welt i!\n");
3
puts(text);

Ich möchte jetzt aber ein "char-Array-Array" haben.  Also in folgender 
Form
1
puts(text[0]); /* ergibt die Ausgabe "Hallo Welt, zum Ersten!" */
2
puts(text[1]); /* ergibt die Ausgabe "Ciao, Welt.. bis bald!" */

Was ist der richtige Weg? Ein zweidimensionales Array?

Vielen Dank,
Gruß
Dennis
Gast #3092704
Lesenswert?

Dr. Sommer schrieb:
> Rene schrieb:
>> Oder ein Array mit zwei char Pointern, aber dann musste Du den Speicher
>> selbst allozieren.
> Nein, Nein:
> 2-Dimensionales Array braucht n* soviel Speicher wie der größte String
> braucht (hässlich, unüblich), und für das 2. siehe meinen 1. Post

Naja, Dein Weg ist natürlich schöner. Aber in seinem Beispiel will er 
den Text mit strcpy reinschreiben. Dann funzt Dein Beispiel nur noch 
beschränkt, nämlich nur solange der zu kopierende String kleiner gleich 
gross ist, wie der String mit dem das Array initialisiert wurde.
Gast #3092733
Lesenswert?

Rene schrieb:
> Aber in seinem Beispiel will er den Text mit strcpy reinschreiben.
Ach so war das gedacht... Nagut dann doch ein 2-dimensionales array mit 
Größenabfrage oder so:
1
char arr[numberOfStrings][maxStringSize];
2
char* inputString = ....
3
if(strlen(inputString < maxStringSize)) { // Echt-Kleiner, da das 0-Byte noch reinmuss
4
  strcpy (arr[0], inputString);
5
}
#3092766
Lesenswert?

Dr. Sommer schrieb:
> Rene schrieb:
>> Oder ein Array mit zwei char Pointern, aber dann musste Du den Speicher
>> selbst allozieren.
> Nein, Nein:
> 2-Dimensionales Array braucht n* soviel Speicher wie der größte String
> braucht (hässlich, unüblich)

das kann man so nicht sagen.
Das hängt u.a. auch von 2 Faktoren ab

* was will er eigentlich wirklich machen
* und nicht zu letzt: wie gut kann er programmiere

Da er danach fragen muss, ist er noch nicht so weit, dass er das mit 
dynamischer Allokierung hinkriegt :-)
#3092876
Lesenswert?

> * was will er eigentlich wirklich machen
Einlesen von Zeichenketten aus einer CSV-Datei und speichern in dem 
beschriebenen Szenario.

> * und nicht zu letzt: wie gut kann er programmiere
42, aber ich bin etwas aus der Übung.

> Da er danach fragen muss, ist er noch nicht so weit, dass er das mit
> dynamischer Allokierung hinkriegt :-)
Unlogisch. "Er" liest übrigens mit und beantwortet Fragen die 
weiterhelfen das Problem zu lösen sehr gerne...

Gruß Dennis
#3092913
Lesenswert?

Hi nochmal,

das Programm soll (vorerst) auf dem PC implementiert werden. 
Dementsprechend ist ist der Speicherverbrauch erstmal wurscht.

Die Daten müssen zunächst komplett vorliegen bevor ich sie 
weiterverarbeiten kann. Dass ich um die dynamische Allokierung nicht 
rumkomme ist klar, da ich im Vorfeld nicht weiß um wieviele Spalten es 
sich handelt.

Gruß Dennis
#3092988
Lesenswert?

Rene schrieb:
> Hallo Dennis,
>
> wenn Du das in C programmierst, würde ich eine Linked List nehmen, da Du
> ja die effektive Länge des CSV Files nicht kennst.
> Das dürfte in dem Fall das einfachste sein.
>
> Mit C++ würden sich einfachere Möglichkeiten anbieten.
>
> Grüsse,
> R.

Hi Rene,

vielen Dank. Das werde ich dann wohl machen. Aber ich  wollte mal 
ausloten ob es noch andere Möglichkeiten gibt.

Gruß
Dennis

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren