String in Stringarray
-
Also ich habe folgenden Code:
...
char roh[]="hallo";
char lib[100][100];
strcpy(lib[20],roh[1]);
...Also ich habe da ein Stringarray... nun kommt folgende Fehlermeldung:
"invalid conversion from `char' to `const char*' "
Also ich denke mal er hat Probleme einen 1-dimensionalen array in einen 2-dim. zu schreiben, aber wie kann ich das Problem beheben?
Mfg
-
Hi Bruder !
roh[1] ist ein char, kein char*
Du würdest also nur ein Zeichen, nämlich das a von "hallo" kopieren.
Wenn das ganze "hallo" kopiert werden soll, musst du strcpy(lib[20],roh);
schreiben.Wenn du nur "allo" kopieren willst, schreibst du
strcpy(lib[20],roh+1);
usw.
-
Schon klar das roh[1] kein char ist! Ich will ja nur 1 Zeichen nach lib bringen...
strcpy(lib[20],roh+1);
Und wie kann ich da z.B. nur das 2 Zeichen kopieren?
THX!
Mfg
-
blackd3sert schrieb:
Schon klar das roh[1] kein char ist! Ich will ja nur 1 Zeichen nach lib bringen...
falsch. roh[1] ist ein char. aber char != char* (--> pointer of char)
ein zeichen nach lib:
/* dein code */ char roh[]="hallo"; char lib[100][100]; /* ein zeichen, das h: */ lib[20][0] = roh[0];
Und wie kann ich da z.B. nur das 2 Zeichen kopieren?
indem du den index veränderst:
lib[20][0] = roh[1];
-
Das ist ein char. Aber egal.
Kopieren "von vorn":#define ClearString(a,b) memset( a, 0, b ) int main() { char roh[]="hallo"; char lib[100][100] = {0}; ClearString( lib[20], sizeof(lib[20])); strncpy(lib[20], roh, 1); puts(lib[20]); ClearString( lib[20], sizeof(lib[20])); strncpy(lib[20], roh, 2); puts(lib[20]); ClearString( lib[20], sizeof(lib[20])); strncpy(lib[20], roh, 3); puts(lib[20]); ClearString( lib[20], sizeof(lib[20])); strncpy(lib[20], roh, 4); puts(lib[20]); ClearString( lib[20], sizeof(lib[20])); strncpy(lib[20], roh, 5); puts(lib[20]); return 0; }
-
Prinzip ist klar, ne ? Und immer schön die Arrays sauber halten char a[N] = {0};
bzw memset( char, 0, sizeof(a));// Kopiert das zweite "l" von "hallo" strncpy( lib[88], roh+3, 1 );
-
Xantus schrieb:
indem du den index veränderst:
geeenau, das ist auch eine möglichkeit:
char lib [100][100];
char roh[] = "hallo";
pseudo:
lib[0...99][0...99] = roh[0...4];