Все, что я хочу, это напечатать размер файла в байтах, которые я использую
DIR *d;
struct dirent *dir;
d= opendir(absolute_path);
while((dir= readdir(d))!=NULL){
printf("%s\t %d\t %u\n",dir->d_name,dir->d_type,(int long long )dir->d_off);
}
Печать d_off типа off_t
неверна. Для файла 323,388 bytes
он печатает 1296623584
Я думаю, что проблема в кастинге. Я перепробовал много кастингов, таких как %d
, %s
, %u
, %llu
... Какой кастинг правильный?
РЕДАКТИРОВАТЬ: правильная функция для поиска размера файла - lstat()
с использованием статистической структуры.