Если getenv должен возвращать указатель на значение в среде, не должна ли эта программа печатать строковое значение переменной окружения?Ошибка printf и getenv - ожидает символ char *, но аргумент 2 имеет тип int
#include <stdio.h>
#include <unistd.h>
int main() {
printf("HOME=%s\n",getenv("HOME"));
return 0;
}
Я получаю следующее предупреждение, когда я компилирую:
format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’
И когда я запускаю программу, я получаю Segmentation Fault.
Я использую Ubuntu, и мне интересно, связано ли это с разрешениями или другой формой безопасности.
'#include' –
BLUEPIXY
я вещь, которая должна быть #include также, GETENV() может возвращать NULL, так что условие ошибки должно быть проверено, прежде чем передать код возврата в printf() –
user3629249