我在我的c代码中使用getenv()。
下面是我使用的代码
#include<windows.h>
#include<stdio.h>
int main()
{
char *path=getenv("USERPROFILE");
strcat(path,"\\bullshit");
char *newpath=getenv("USERPROFILE");
printf("%s",newpath);
}打印语句的结果是
C:\Users\username\bullshit为什么getenv()对环境变量的调用由于strcat而发生变化
注:我在windows 8.1系统上使用minw-gcc编译器32位。
发布于 2020-01-27 09:32:30
如果您不拥有getenv返回的字符串,您就不能修改它(例如,在它后面附加一些内容)。
如果您需要修改它,那么将其复制到您拥有的内存中,并可以修改,就像数组一样:
char path[PATH_MAX];
strcpy(path, getenv(...));
strcat(path, ...);如前所述,这可能导致缓冲区溢出,因此使用strncpy是一种更安全的方法。但请记住,有一种情况是,它不会添加字符串null-结束符,因此需要显式地添加它。
https://stackoverflow.com/questions/59928245
复制相似问题