Teil eines Char Arrays in ein anderes Char Array kopieren



  • Hallo,

    Ich habe Folgendes Problem:

    Ich habe ein int-Array, wo bestimmte Zahlen stehen.

    int pos[6];
    
    pos[0] = 4;pos[1] = 10;pos[2] = 14; usw ...
    

    und Ich habe ein Char-Array

    char buf[4096] = "Hier Steht Ein Text\0";
    

    Nun möchte ich ein neues Char Array erstellen.

    char buff[4096];
    

    und dort den Inhalt von buf ab der Stelle pos[2] in das buff-Char-Array hineinschreiben.

    Nun meine Frage:

    Wie kann ich das am besten programmieren?

    Folgendes habe ich im Internet schon dazu gefunden:

    strcat(buff, buf+10); <-- Das Funktioniert
    strcar(buff, buf+pos[1]); <-- Das Funktioniert leider nicht.
    

    Hier der Gesamte Code. Sorry wenn er unordentlich ist, aber ich bin noch ein Anfänger 😃

    #define BUF_SIZ 4096
    
    void evaluatets(char buf[BUF_SIZ])
    {
    	printf("Auswertung von %s\n\n\n", buf);
    
    	char * pch;
    	pch = strchr(buf, ' ');
    
    	int pos[6];
    	int i = 0;
    	while(pch!=NULL)
    	{
    		pos[i] = pch-buf+1;
    		// printf("found at %d\n",pos[i]);
    		pch=strchr(pch+1,' ');
    		i++;
    	}
    
    	printf("%c\n" , buf[pos[2]-1]);
    
    	char url[BUF_SIZ];
    
    	[b]strcat(url, buf+i[2]);[/b] //Das funktioniert leider nicht
    
    	printf("Es wird gespielt: %s", url);
    }
    

    Vielen Dank,

    Fotetaja



  • strcat ist die falsche Funktion dafür ➡ strcpy. Falls du wissen willst wieso, lies die Dokumentation.


  • Mod

    Vergleich noch mal das, was du vor hast (oben), mit dem, was du tatsächlich gemacht hast (unten). Da gibt es einen kleinen, aber gravierenden Unterschied.

    Weiterhin ist "funktioniert nicht" keine Fehlerbeschreibung. Gib die Fehlermeldung an, dann wissen die Leute direkt, wonach sie gucken müssen, anstatt sich alles durchlesen zu müssen. Wenn es keine Fehlermeldung gib, beschreib, was du erreichen möchtest und was stattdessen passiert. Siehe http://www.c-plusplus.net/forum/136013 und die Links in meiner Signatur.

    edit: Angesichts der vielen anderen Fehler, gehe ich mal davon aus, dass es sich nur um Rechtschreibfehler handelt. Das ist noch ein wichtiger Punkt: Copy&Paste bei Code benutzen! Nun hast du durch deine fehlende Fehlerbeschreibung und durch die unnötigen Schreibfehler bloß die Zeit verschwendet, die ich ansonsten hätte nutzen können, um dir zu helfen.



  • Ja stimmt. Das andere is ja für das Anhängen eines arrays.

    Danke für den Tipp, jetzt funktioniert es 🙂

    (Wie mir das nur passieren konnte das ich die falsche funktion hernehmen konnte 😡 )

    Vielen Dank für die Hilfe.

    Fotetaja



  • fotetaja schrieb:

    char buf[4096] = "Hier Steht Ein Text\0";
    

    Die Angabe der \0 ist bei einem Stringliteral nicht nötig. Das macht der Compiler.



  • fotetaja schrieb:

    Ja stimmt. Das andere is ja für das Anhängen eines arrays.

    Ne. Das ist für das Anhängen eines C-Strings, also eines nullterminierten char-Arrays an ein ebenfalls nullterminiertes char-Arrays.
    Das ist ein wichtiges Detail.


Log in to reply