Второй параметр getcwd

Что мне следует заполнить вторым параметром функции getcwd, если я читаю текущий каталог?

2 ответа

Размер буфера, который вы хотите заполнить:

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);

Длина буфера, который вы указываете в первом параметре, чтобы переполнение не могло произойти.

Другие вопросы по тегам