Функция get_current_path получает указатель на строку символов текущего рабочего каталога. printf ("% s \ n", buf); в самой функции печатается именно то, что я хочу, но затем вне функции printf ("% s", thisbuf); дает мне много мусора. Я предполагаю, что совершил здесь какую-то глупую ошибку, но не могу понять, что это такое.
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
int get_current_path(char *buf) {
long cwd_size;
char *ptr;
cwd_size = pathconf(".", _PC_PATH_MAX);
if ((buf = (char *) malloc((size_t) cwd_size)) != NULL)
ptr = getcwd(buf, (size_t)cwd_size);
else cwd_size == -1;
printf("%s\n", buf);
printf("%ld\n", cwd_size);
return cwd_size;
}
int main (int argc, char **argv)
{
char *thisbuf;
get_current_path(thisbuf);
printf("%s", thisbuf);
return 0;
}