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];


Anmelden zum Antworten