strcat Problem mit char* und char[]



  • Ich habe ein für mich sehr merkwürdiges Problem...hier mal ein Codeauszug

    char *port;
    char path[128];
    char *name;
    ..
    ..
    ..
    path[0]='\0';
    name[0]='\0';
    strcat(path,"ordner/");
    strcat(path,scriptlist[i]);
    strcat(name,path);
    

    Das klappt erstmal alles prima, aber der völlig unbeteiligte "port" hat nach der letzten strcat Anweisung einen anderen Wert als vorher (zuerst z.B. 1 und danach h)
    Ich kanns mir nicht wirklich erklären und glaube, dass ich Verständisprobleme mit char*/char[] habe



  • Hast Du für name Speicher reserviert?



  • LordJaxom_lg schrieb:

    Hast Du für name Speicher reserviert?

    Nope, dass ist auch noch so ein Verständnisproblem mit Malloc. Wieviel sollte ich denn da am besten reservieren?



  • Am besten soviel, wie Du reinschreiben möchtest? 🙂

    Den Unterschied müsstest Du sehen: path ist ein Array von 128 Zeichen, d.h. ab dem 129. Zeichen machst Du Dir Speicher kaputt. Die anderen beiden sind nicht initialisierte Zeiger. Da ist jeglicher Zugriff undefiniert.

    Und wenn Du den Inhalt von path nach name kopieren möchtest, musst Du mindestens so viele Bytes reservieren, wie Zeichen in path stehen (plus eins fürs Nullbyte). Das müssen nicht 128 sein, da der Inhalt ja auch kürzer sein könnte.

    char* name = malloc(strlen(pfad) + 1);
    strcpy(name, pfad);
    /* später: */
    free(name);
    


  • bist du sicher, das du mit malloc arbeiten musst/möchtest?
    was willstn machen?


Log in to reply