C++ 无法在c+;中生成正确的字符数组+;
我不知道我第二次调用这个函数时,我得到的路径被追加为C++ 无法在c+;中生成正确的字符数组+;,c++,string,function,C++,String,Function,我不知道我第二次调用这个函数时,我得到的路径被追加为 引用getenv的手册页: 正如通常实现的那样,getenv()返回指向环境列表中字符串的指针。调用者必须注意不要修改这个字符串,因为那样会改变进程的环境 换句话说,你目前正在做的是不允许的 而是创建另一个缓冲区并在该缓冲区中连接。例如: char*tempPath=getenv(“LocalAppData”); if(tempPath!=NULL) { std::字符串环境; env=临时路径; env+=“\\MS\\namedP
引用
getenv
的手册页:
正如通常实现的那样,getenv()返回指向环境列表中字符串的指针。调用者必须注意不要修改这个字符串,因为那样会改变进程的环境
换句话说,你目前正在做的是不允许的
而是创建另一个缓冲区并在该缓冲区中连接。例如:
char*tempPath=getenv(“LocalAppData”);
if(tempPath!=NULL)
{
std::字符串环境;
env=临时路径;
env+=“\\MS\\namedPipe.json”
STD::你是如何确定你可以把数据附加到<代码> GETEnv的字符串上?我会查一下,确认我是你。你是问C还是C++?看起来临时的字符串是第二次调用函数的字符串……我如何清除这个?GETEnv是环境表,通过写Wi使它变长。I’我将更改您写入的字符串,并在表的下一个字符串中把事情搞乱——就像通过写入argv[0]使它变长会搞乱argv[1]一样,因为指向此字符数组的指针已更新(我猜是这样的)……有什么方法可以解决这个问题吗?
myFunction(){
char *tempPath = getenv("LocalAppData");
strcat(tempPath, "\\MS\\namedPipe.json");
printf(" the path is %s \n",tempPath
}
int main(){
myFunction();
myFunction();
return 0;
}