从函数返回一个String并在C中再次调用它

时间:2014-03-25 21:16:42

标签: c string function

我使用下面的功能附加'>'到一个字符串。当我调用该函数时,它第一次工作正常,但是,每次之后,而不是创建一个带有这些括号中的一个的新字符串'>'附加后,它会不断附加到原始字符串。我如何阻止它这样做?

/home/user >
/home/user > >
/home/user > > >   etc


Char * get_prompt(){
    char *pwd;
    pwd = getenv("PWD");
    strcat(pwd, " >");
    return pwd;
}

1 个答案:

答案 0 :(得分:1)

修改getenv返回的字符串是不安全的。相反,你必须复制字符串,然后附加到它:

char *pwd = malloc( sizeof( char ) * MAX_LEN );
strcpy( pwd, getenv("PWD") );
strcat( pwd, " >" );
return pwd; // remember to free this memory.