Probleme mit char arrays
-
Hallo,
hab mich auf dieser homepage neu eingeloggt und wollte hiermit an die user was fragen. Ich hab ein bischen Erfahrung in c aber hab damit probleme meine gedanken in code umzusetzen.
Es geht um Folgendes, ich hab einen text aus einer zeichenkette welcher vom benutzer eingelesen wird. Diesen text soll ich nach bestimmten zeichen (sowie zb. '\0' oder '\n' in strings trennen. Diese strings müssen im prinzip 2 dimensionale arrays sein, was auch aufgefordert wird.
Also zb. erster string ist char string[0][7] = "erster_string_vom_text" und so weiter.
jetzt komm ich zum punkt, wie kann ich eine gewisse zeichenkette so wie zb char string1 = "ldfdk" in eine 2 dimensionales array reinkoppieren.
es gibt eine gewisse strcpy funktion:char *strcpy(char *dest, char *src) { char *save = dest; while (*dest++ = *src++); // fast but tricky! return save; }
wo wie man hier sieht wird aus einer stringkette in eine andere reinkoppiert aber könnte man sowas wie
int counter; counter = 0; do { (*dest[counter++] = *src++); } while(src != '\0');
implementieren?
ich weiss dass es nicht ganz logisch aussieht, deswegen wollte ich euch um vorschläge bieten..
peace andro
-
strcpy ist eine Funktion aus der Standardbibliothek, die rufst du einfach auf und implementierst sie nicht etwa selbst, so wie du es versuchst.
char ziel[100]; ... strcpy(ziel,"blafasel");
-
das problem ist das ich keine sring.h in diesem programm verwenden darf..
LG
-
die dimension deines arrays ist nebensächlich.
du ermittelst die gewisse zeichenkette und übergibst den zeiger an den anfang dieser gewissen zeichenkette ( hier src ) plus die anzahl der zu kopierenden zeichen an deine funktion und sicherheitshalber vllt. noch die größe des puffers.
z.b. so:void ncopy ( char buf[], int bufsize, char* src, int n ) { int i = 0; while ( i < n && i < bufsize - 1 ) buf [ i++ ] = *src++; buf [ i ] = 0; }
-
ist mir schon klar. aber das was ich machen will ist nicht
buf [ i++ ] = *src++; //wie in deinem codebsp.
sondern
buff[][ i++ ] = *src++;
dabei ist arraygrösse von buff[arraygrösse][] zu ignorieren.
respect
andro
-
andromeda_3050 schrieb:
das problem ist das ich keine sring.h in diesem programm verwenden darf..
LGTheoretisch brauchst du die auch nicht. Ein kleines
char * strcpy ( char * , const char * );
am Programmanfang sollte genügen. Dann lernen du und dein Lehrer vielleicht auch etwas über den Unterschied zwischen Compilieren und Linken.
-
andromeda_3050 schrieb:
ist mir schon klar. aber das was ich machen will ist nicht
buf [ i++ ] = *src++; //wie in deinem codebsp.
sondern
buff[][ i++ ] = *src++;
dabei ist arraygrösse von buff[arraygrösse][] zu ignorieren.
respect
androdu kannst &buff[i] an die funktion übergeben, solange 0 <= i < arraygröße ist, aber
ignorieren, wozu? du kannst arraygröße vergrößern/verkleinern aber ignorieren
kann zu abstürzen deines programms führen, wenn du die arraygrenze überschreitest.