sizeof(buf)
вернет размер char*
, который будет иметь столько же битов, сколько ваш процессор (32 или 64 бита).
То, что вы хотите, это использовать магическое число, с которым вы malloc'ed, в данном случае 1024.
Попробуйте это:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int main()
{
//char buf[1024];
char * buf;
char * cwd;
buf = (char *)malloc(sizeof(char) * 1024);
if((cwd = getcwd(buf, 1024)) != NULL)
printf("pwd : %s\n", cwd);
else
perror("getcwd() error : ");
return 0;
}