Здесь есть несколько вещей, которые вы делаете неправильно:
void getCurrentDirectory(char *directory)
{
getcwd(directory, sizeof(directory));
}
Ошибка 1:
`sizeof(directory)`
дает вам размер указателя, если быть точным, char *. Ваше намерение - передать размер массива, а не размер указателя.
Ошибка 2:
`printf("%s", *directory);`
Передает первый элемент массива в printf, а не в адрес массива. Ваше намерение состоит в том, чтобы напечатать весь массив, а не только первый элемент.
Исправленное решение
Вы должны делать
void getCurrentDirectory(char *directory, size_t arrSize)
{ ^^^^^^^^^^^^^^
getcwd(directory, arrSize);
}
Размер массива передается явно, поэтому функция может просто использовать его.
В основном при печати содержимого массива:
printf("%s", directory);