Hallo zusammen,
vielleicht kann mich mal jemand vom Schlauch schubsen.. bekanntlich kann
mit dem folgenden Code auf char arrays in C zugegriffen werden:
1
chartext[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
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
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.
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
chararr[numberOfStrings][maxStringSize];
2
char*inputString=....
3
if(strlen(inputString<maxStringSize)){// Echt-Kleiner, da das 0-Byte noch reinmuss
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 :-)
Karl Heinz Buchegger schrieb:> Da er danach fragen muss, ist er noch nicht so weit, dass er das mit> dynamischer Allokierung hinkriegt :-)
Na, genau deshalb war meine erste Antwort: yep! :-)
Weil, ein langes Rückfragen hätte vermutlich die Frage nur wesentlich
verkompliziert.
> * 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
Ok, dann anders.
Ein paar Fragen:
- läuft das Programm auf einem PC oder µC (frage zielt auf
Speicherbedarf ab)?
- verarbeitest Du das CSV Zeile für Zeile oder möchtest Du das ganze
erst mal einlesen (weil, dann müsste man dynamisch allozieren)?
Grüsse,
R.
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
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.
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