Вы возвращаете указатель на локальную переменную, объявленную в get_current_path
, т.е. переменную, которая, вероятно, будет очищена после возврата из функции. Вы должны принять буфер в качестве аргумента и заполнить его для вызывающей стороны, т.е.
void char* get_current_path(char* outDir)
ЗА РЕДАКТИРОВАТЬ:
int main(int argc, char **argv)
{
char *path = (char*)malloc(sizeof(char)*FILENAME_MAX);
GetCurrentDir(path, sizeof(path));
printf("path: %s\n", path);
//other stuff
}
sizeof(path)
будет 4 или 8 (32-разрядным или 64-разрядным), поскольку теперь это просто указатель, а не массив. Вам нужно указать фактический размер, т. Е. sizeof(char) * FILENAME_MAX
, поэтому ...
int main(int argc, char **argv)
{
size_t bufSize = sizeof(char) * FILENAME_MAX;
char *path = (char*)malloc(bufSize);
GetCurrentDir(path, bufSize);
printf("path: %s\n", path);
//other stuff
}