Я вижу, что вы делаете String-Copy (strncpy
) в variable
.
variable
объявлен как char*
, но я не вижу, чтобы вы выделяли для него какую-либо память или иным образом присваивали значение variable
.
В результате variable
содержит случайный адрес памяти, и вы копируете часть вашего environVar
в неизвестный фрагмент памяти, что приводит к сбою.
Чтобы исправить это, вы должны использовать malloc
, чтобы выделить часть памяти для variable
перед вызовом strncpy
.
РЕДАКТИРОВАТЬ : после вашего недавнего изменения ваш код теперь имеет:
char* variable = "";
и позже:
char* variable;
Второе объявление variable
является все еще неинициализированным и скрывает ( shadows ) первое объявление. Таким образом, вы вообще не устранили проблему.
Когда я предлагаю использовать malloc
для выделения памяти, я говорю об этом:
variable = malloc(strlen(delim));
strncpy( variable, environVar, strlen(delim) );
Обратите внимание, что каждый раз, когда вы выделяете память, например, с помощью malloc
, вы должны быть готовы освободить ее, когда закончите. В противном случае ваша программа будет иметь утечку памяти.