d_name
содержит имя файла в этом каталоге. stat
хочет имя, включающее часть каталога, если это не текущий каталог.
Создайте временную строку, содержащую полный путь к файлу d_name
.
РЕДАКТИРОВАТЬ: Образец
char const * DirName = "/tmp";
....
char * FullName = (char*) malloc(strlen(DirName) + strlen(ent->d_name) + 2);
strcpy(FullName, DirName);
strcat(FullName, "/");
strcat(FullName, ent->d_name);
stat(FullName, &statbuf);
free(FullName);