Всичко, което искам, е да отпечатам размера на файла в байтове, който използвам
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()
с помощта на stat структура.