Strings in Arrays speichern

05/11/2012 - 22:04 von Christian Beine | Report spam
Hallo,

ich könnte mir vorstellen, daß auch meine Frage Teil der
FAQ sein könnte, aber jede Anfàngerfrage in der FAQ würde
wahrscheinlich auch den Rahmen sprengen. Deshalb hoffe
ich, daß mir vielleicht trotzdem jemand in seiner Kaffee-
oder Zigaretten- Pause weiterhelfen könnte.

Vor lauter herum probieren und lesen habe
ich jetzt irgendwie gànzlich den Durchblick verloren.

Ich versuche bzw. hàtte gerne einen Array mit Strings gefüllt.
Der Inhalt des Strings _file.DE.filename_ soll dann bei jedem
Schleifendurchlauf in einem Array landen.

Vielleicht habe ich da auch einfach ein Problem mit dem Verstàndnis,
aber ich habe das so gemacht / verstanden:


int array_count = 0;
while (true)
char strings[array_count][10]; // X strings mit einer
// Zeichenlànge von 11 ?


Weiter komme ich leider nicht.
Ich habe versucht die Strings zu kopieren

strcpy (strings[array_count][0], file.DE.filename);

hat aber nicht wirklich zum erwünschten Ergebnis geführt.

In dem Beispiel zu _strcpy_ in Wikibooks wird erwàhnt, daß
_strcpy_ keinen null-Character hinzufügt. Das Beispiel sah so
aus: strB[sizeof(strB)-1] = '\0';

In meinem Fall müßte es dann so aussehen, wobei es schon so
aussieht als könnte das nicht funktionieren :-/

strings[array_count][0][sizeof(strings[array_count][0])+1 = '\0'


Dann habe ich noch etwas von Pointern gelesen, was mich
letzendlich völlig verwirrt hat.

char *string = &strings[array_count][0];



array_count++;
}

Ist ein 2d-Array überhaupt die richtige herangehensweise ?.
Wàre vielleicht jemand so nett mir da mal etwas auf die Sprünge zu helfen ?.

Vielen Dank.

Grüße
Christian
 

Lesen sie die antworten

#1 Rainer Weikusat
05/11/2012 - 23:30 | Warnen spam
Christian Beine writes:

[...]


Ich versuche bzw. hàtte gerne einen Array mit Strings gefüllt.
Der Inhalt des Strings _file.DE.filename_ soll dann bei jedem
Schleifendurchlauf in einem Array landen.

Vielleicht habe ich da auch einfach ein Problem mit dem Verstàndnis,
aber ich habe das so gemacht / verstanden:

int array_count = 0;
while (true)
char strings[array_count][10]; // X strings mit einer
// Zeichenlànge von 11 ?



Das sind C-Strings deren maximale 'Nutzlast' 9 Zeichen betragen kann
(weil das zehnte fuer die abschliessende 0 gebraucht wird).


Weiter komme ich leider nicht.
Ich habe versucht die Strings zu kopieren

strcpy (strings[array_count][0], file.DE.filename);



Wenn wir mal annehmen, das Du kein array der Laenge Null deklariert
haettest, dann waere

strings[0][0]

das erste Zeichen im ersten String und der erste String waere (soweit
mir das klar ist), strings[0], vgl


#include <stdio.h>
#include <string.h>

int main(void)
{
char strings[2][10];

strcpy(strings[0], "test56789");
strcpy(strings[1], "testabcde");
puts(strings[0]);
puts(strings[1]);
return 0;
}
-

[...]

In dem Beispiel zu _strcpy_ in Wikibooks wird erwàhnt, daß
_strcpy_ keinen null-Character hinzufügt. Das Beispiel sah so
aus: strB[sizeof(strB)-1] = '\0';



Das ist jedenfalls falsch. strncpy fuegt keine 0 an falls die Laenge
des zu kopierenden Strings >= der uebergebenen Groesse des Zielpuffers
war. strcpy kopiert einfach nur alles bis zur naechsten 0 (inklusive).

Ähnliche fragen