Для работы с переменными используются функции getvar()
и setvar()
из библиотеки stdlib.h
.
Как понятно из названий – функция getvar()
используется для получения значения переменной, а setvar()
– для добавления или изменения.
Для демонстрации – напишем такой код:
#include <stdio.h> #include <stdlib.h> int main () { char *home, *newvar; // получем занчение переменной $HOME home = getenv("HOME"); // Создаём новую переменную $NEWVAR со значением newvarvalue-1 setenv("NEWVAR", "newvarvalue-1", 0); // записываем занчение $NEWVAR в локальную переменную newvar newvar = getenv("NEWVAR"); printf ("Home: %s, and NEWVAR: %sn", home, newvar); // задаём новое значение переменной, но т.к. int replace = 0 - оно не изменится setenv("NEWVAR", "newvarvalue-2", 0); newvar = getenv("NEWVAR"); printf ("NEWVAR: %sn", newvar); // задаём новое значение переменной, но т.к. int replace = 1 - оно изменится setenv("NEWVAR", "newvarvalue-3", 1); newvar = getenv("NEWVAR"); printf ("NEWVAR: %sn", newvar); return 0; }
И результат выполнения:
$ gcc getenv.c -o getenv
$ ./getenv Home: /home/setevoy, and NEWVAR: newvarvalue-1 NEWVAR: newvarvalue-1 NEWVAR: newvarvalue-3
Для удаления переменных – используется функция unsetenv()
.
Перепиешм предыдущий код:
#include <stdio.h> #include <stdlib.h> int main () { char *newvar; // Создаём новую переменную $NEWVAR со значением newvarvalue-1 setenv("NEWVAR", "newvarvalue", 0); // записываем занчение $NEWVAR в локальную переменную newvar newvar = getenv("NEWVAR"); if (newvar) { printf ("NEWVAR: %sn", newvar); } else { printf ("NEWVAR not defined: %sn", newvar); } // удаляем переменную $NEWVAR unsetenv ("NEWVAR"); newvar = getenv("NEWVAR"); if (newvar) { printf ("NEWVAR: %sn", newvar); } else { printf ("NEWVAR not defined: %sn", newvar); } return 0; }
Результат:
$ ./getenv NEWVAR: newvarvalue NEWVAR not defined: (null)