Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Размер файла на C
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
InvisibleFed
Как определить размер файла на C, используя только стандартную библиотеку (не C++) наиболее оптимально и быстро? Извиняюсь за вопрос.
arttab
Не понятен вопрос.
если до компиляции, то "средняя температура по больнице" ровна 1000 строк - 4 КБ.
после компиляции получите реальный размер
Andy Great
Если надо определить размер файла в байтах, то используйте fopen/lseek.
Olej
Цитата(Andy Great @ Feb 25 2007, 17:06) *
Если надо определить размер файла в байтах, то используйте fopen/lseek.

stat ? fstat ?
- и в какой ОС API?
InvisibleFed
Цитата
Не понятен вопрос.
если до компиляции, то "средняя температура по больнице" ровна 1000 строк - 4 КБ.
после компиляции получите реальный размер


Я имел ввиду любого файла (не того, в котором код или бинарник). smile.gif

Цитата
Если надо определить размер файла в байтах, то используйте fopen/lseek.


Я понял fseek. Вот только, что вернет мне этот fseek? Я всегда думал, что код ошибки или 0. Приведите пример, может я чего не знаю. Как бы Вы пользовались.

Цитата
stat ? fstat ?
- и в какой ОС API?


Я же написал, ТОЛЬКО СТАНДАРТНАЯ БИБЛИОТЕКА. Какая разница какое API?
zltigo
Цитата(InvisibleFed @ Feb 26 2007, 07:06) *
Я понял fseek. Вот только, что вернет мне этот fseek?

Про fseek() это Вы сами придумали - читайте внимательно, какую функцию посоветовали - lseek().
andrew_b
Цитата(zltigo @ Feb 26 2007, 10:48) *
Цитата(InvisibleFed @ Feb 26 2007, 07:06) *

Я понял fseek. Вот только, что вернет мне этот fseek?

Про fseek() это Вы сами придумали - читайте внимательно, какую функцию посоветовали - lseek().

Проще, как уже советовали, stat(). Только эта функция не входит в стандартную библиотеку Си.
Olej
Цитата(InvisibleFed @ Feb 26 2007, 09:06) *
Я же написал, ТОЛЬКО СТАНДАРТНАЯ БИБЛИОТЕКА. Какая разница какое API?

Стандартная В ЧЁМ? ... ни хрена себе wink.gif - так вы и в Win32 станете вызывать fork() ...
zltigo
Цитата(andrew_b @ Feb 26 2007, 10:22) *
Проще, как уже советовали, stat(). Только эта функция не входит в стандартную библиотеку Си.

Перечитайте первый пост, пожалуйста.


Цитата(Olej @ Feb 26 2007, 10:27) *
Стандартная В ЧЁМ?

clib есть минимальная библиотека c определенным стандартом набором независящих от используемой платформы функций.
InvisibleFed
Цитата
Про fseek() это Вы сами придумали - читайте внимательно, какую функцию посоветовали - lseek().


Я конечно рад пользовать, но чего-то не нашел подтверждения, что эта функция входит входит в clib. То что это системный вызов Unix (причем стандартизированный) - это да, но С?..
Andy Great
Ну не хотите так, прочитайте файл в большой буфер, fread покажет размер в байтах. Или читайте блоками.
SM
Юзаю fseek(file,0,SEEK_END) и затем ftell. Вроде как оно стандартное, и всегда и везде работает.
zltigo
Цитата(SM @ Feb 26 2007, 18:14) *
Юзаю fseek(file,0,SEEK_END) и затем ftell.

Да, очевидно, это самое ANSII-шное решение.
InvisibleFed
Цитата
Юзаю fseek(file,0,SEEK_END) и затем ftell. Вроде как оно стандартное, и всегда и везде работает.


Респект! Как это я с ftell промахнулся. Всем спасибо.

P.S. А вообще капец как мы все на систему (ОС) подсели. Чуть ниже - и все, кердык, два дня искал. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.