Размер буфера, который вы хотите заполнить:
char result[PATH_MAX];
char *r = getcwd(result, PATH_MAX);
Неверная установка (или точечный ENAMETOOLONG
/ ERANGE
) может привести к проблемам с переполнением буфера.
Предупреждение: Не все платформы предоставляют PATH_MAX . Если вы можете быть уверены, что он есть на ваших платформах, это очень удобно.
Вы также можете использовать realpath()
, (POSIX.1-2008), который будет malloc()
память для вас, чтобы сделать это более чисто:
char *result = realpath(".", NULL);
// do stuff with result
free(result);