char *var Problem mit "auschneiden"



  • ich hab folgendes:

    char *doc
    und argv[1] mit dem wert "ichFind.den.gut

    Kann man *doc sagen, dass er nach dem ersten Punkt anfangen und beim zweiteb Punkt aufhören soll oder kann man nur die Startposition bestimmen und dann eben bis zum Ende laufen lassen?



  • du muesstest argv[1] irgendwohin kopieren,
    dann mit strchr() den ersten punkt suchen,
    doc auf das zeichen nach dem punkt zeigen lassen,
    naechsten punkt suchen und zum nullzeichen machen.



  • also das erste hat geklappt, nur wie mache ich dan der stelle eine \0 ?
    Ich habs zuerst mit temp (der zeiger auf den zweiten punkt) = "\0";

    aber dann würde doch der zeiger einfach zu einer \0 im speicher zeigen und nicht eine \0 in den speicher kopieren auf den temp gerade zeigt, oder?

    Tante Edit: Ich habs mit memset doch hinbekommen 😉
    geht das auch eleganter?

    Edit2: Argh, ich bekomms nicht nicht, einen String zu vervielfachen, haps mit memcpy und strcpy versucht und auch eine \0 rangehängt, aber beides verursacht einen Speicherfehler.



  • cmg schrieb:

    Edit2: Argh, ich bekomms nicht nicht, einen String zu vervielfachen, haps mit memcpy und strcpy versucht und auch eine \0 rangehängt, aber beides verursacht einen Speicherfehler.

    Du musst Speicher reservieren, wenn du einen char* kopieren willst:

    #include <stdio.h>
    
    int main(int argc, char* argv[])
    {
        ...
        char* cpy = malloc(strlen(argv[1]) + 1); // Hier werden strlen(argv[1]) + 1 Bytes
                                                 // Speicher reserviert und dessen Startadresse cpy zugewiesen.
    
        // Jetzt kannst du z.B. strcpy aufrufen, um das, worauf argv[1] zeigt, in cpy zu kopieren.
    
        // Wichtig, Speicher auch wieder freigeben!
        free(cpy);
        return 0;
    }
    

    Kommst du mit dieser Info weiter?

    Gruß Caipi



  • THX



  • du brauchst ein pointer tutorial.



  • c.rackwitz schrieb:

    du brauchst ein pointer tutorial.

    Du meinst einen Pointer-Artikel 😉

    MfG SideWinder



  • hehe, den merk ich mir.


Anmelden zum Antworten