Вам не принадлежит строка, возвращаемая getenv
, вы не можете ее изменить (например, добавив что-то к ней).
Если вам нужно изменить ее, скопируйте ее в память Вы владеете и можете изменять, например, массив:
char path[PATH_MAX];
strcpy(path, getenv(...));
strcat(path, ...);
Как уже отмечалось, это может привести к переполнению буфера, поэтому более безопасным может быть использование strncpy
. Но помните, что есть случай, когда он не добавляет строку с нулевым терминатором, поэтому его нужно добавить явно.