C++ strings extrahieren bzw kopieren

  • Momentan stehe ich vor einem großen Rätsel.


    Immer wenn ich versuche einen String zu kopieren, fetzt mir das Programm* weg.


    ich habe bereits memmove, memcpy, strcpy, strncpy und strtok probiert


    bisher hat nur strtok funktioniert,
    aber nicht so wie ich es möchte.


    ich möchte z.B. BlackAce in 2 Teile spalten
    in Black und in Ace.


    Das die position kann sich allerdings immer ändern,
    dann soll es halt nicht mehr Black und Ace sein
    sonder Bl und ackAce.


    Hier mal ein kleiner Auszug mit strncpy


    char* text[] = {NULL, NULL};
    amx_StrParam(amx, params[4], text[0]);
    cell *addr = NULL;
    amx_GetAddr(amx, params[4], &addr);
    amx_StrLen(addr, &len);


    // hier wird die position zum spilten ermittelt | tut nur nichts zur Sache


    logprintf("Länge %d",strlen(text[0]));
    logprintf("trying");
    strncpy (text[1],text[0],old);


    //text[1]=strtok(text[0],"{");
    len=strlen(text[1]);
    logprintf("Länge %d",len);
    logprintf(text[0]);


    text[2]=strtok(text[0],"}");
    logprintf("Länge %d",strlen(text[2]));
    logprintf("succes");


    Bei diesem Code geht er nach dem Debugen von trying einfach aus.
    Ich hoffe ihr könnt mir irgendwie helfen

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • old soll die Position sein an der gesplitet bzw bis wohin kopiert werden soll

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Probier doch mal das ganze ohne Zeigerarrays.


    Dies gibt mir kein Fehler aus:
    char str1[]= "To be or not to be";
    char str2[6];
    strncpy (str2, str1, 5);
    str2[5] = '\0';

    Jedoch wenn ich das ganze mit Zeigern machen möchte, knallt mir der Debugger Fehler um die Ohren.

  • @Nortex: Mit Zeigern funktioniert das genauso wunderbar. (Einzig, du kannst natürlich nicht irgendwo hinkopieren, wo kein Speicher frei ist.)


    Das z.B. klappt wunderbar: