Я сделал простую функцию, которая получает размер файла.
int file_size( char * filename )
{
int size;
struct stat st;
stat( filename, &st );
size = st.st_size;
return size;
}//file_size
Это работает нормально, но если у меня есть файл, размер которого больше 4 ГБ, чем я получаю отрицательное число, и, конечно, это не правильный размер файла. Итак, как я могу получить такой большой размер файла? Я думаю, что возвращаемое значение должно быть чем-то вроде int, но я не знаю что, и я не думаю, что это решило бы мою проблему.
Спасибо
Kampi
Обновление:
Привет!
Я нашел решение. Я должен использовать __stat64. Я изменил свою функцию, и теперь она получает реальный размер. Я проверил это с большим файлом 8 ГБ.
unsigned long long int file_size( char * filename )
{
unsigned long long int size;
struct __stat64 st;
__stat64( filename, &st );
size = st.st_size;
return size;
}//file_size
И уведомление:
Когда я использовал printf, мне приходилось использовать "% I64d", чтобы распечатать его.