реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Размер файла на C, Оптимальный вариант
InvisibleFed
сообщение Feb 23 2007, 12:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



Как определить размер файла на C, используя только стандартную библиотеку (не C++) наиболее оптимально и быстро? Извиняюсь за вопрос.
Go to the top of the page
 
+Quote Post
arttab
сообщение Feb 25 2007, 14:45
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



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


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Feb 25 2007, 16:06
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Если надо определить размер файла в байтах, то используйте fopen/lseek.
Go to the top of the page
 
+Quote Post
Olej
сообщение Feb 26 2007, 01:26
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



Цитата(Andy Great @ Feb 25 2007, 17:06) *
Если надо определить размер файла в байтах, то используйте fopen/lseek.

stat ? fstat ?
- и в какой ОС API?
Go to the top of the page
 
+Quote Post
InvisibleFed
сообщение Feb 26 2007, 08:06
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



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


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

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


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

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


Я же написал, ТОЛЬКО СТАНДАРТНАЯ БИБЛИОТЕКА. Какая разница какое API?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 26 2007, 10:48
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(InvisibleFed @ Feb 26 2007, 07:06) *
Я понял fseek. Вот только, что вернет мне этот fseek?

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 26 2007, 11:22
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(zltigo @ Feb 26 2007, 10:48) *
Цитата(InvisibleFed @ Feb 26 2007, 07:06) *

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

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

Проще, как уже советовали, stat(). Только эта функция не входит в стандартную библиотеку Си.
Go to the top of the page
 
+Quote Post
Olej
сообщение Feb 26 2007, 11:27
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 11-09-05
Из: Харьков
Пользователь №: 8 458



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

Стандартная В ЧЁМ? ... ни хрена себе wink.gif - так вы и в Win32 станете вызывать fork() ...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 26 2007, 11:38
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(andrew_b @ Feb 26 2007, 10:22) *
Проще, как уже советовали, stat(). Только эта функция не входит в стандартную библиотеку Си.

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


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

clib есть минимальная библиотека c определенным стандартом набором независящих от используемой платформы функций.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
InvisibleFed
сообщение Feb 26 2007, 12:25
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



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


Я конечно рад пользовать, но чего-то не нашел подтверждения, что эта функция входит входит в clib. То что это системный вызов Unix (причем стандартизированный) - это да, но С?..
Go to the top of the page
 
+Quote Post
Andy Great
сообщение Feb 26 2007, 19:04
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 793
Регистрация: 5-11-04
Из: Краматорск, Украина
Пользователь №: 1 057



Ну не хотите так, прочитайте файл в большой буфер, fread покажет размер в байтах. Или читайте блоками.
Go to the top of the page
 
+Quote Post
SM
сообщение Feb 26 2007, 19:14
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Юзаю fseek(file,0,SEEK_END) и затем ftell. Вроде как оно стандартное, и всегда и везде работает.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 26 2007, 20:06
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SM @ Feb 26 2007, 18:14) *
Юзаю fseek(file,0,SEEK_END) и затем ftell.

Да, очевидно, это самое ANSII-шное решение.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
InvisibleFed
сообщение Feb 27 2007, 05:01
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 18-11-06
Из: Хабаровск
Пользователь №: 22 469



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


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

P.S. А вообще капец как мы все на систему (ОС) подсели. Чуть ниже - и все, кердык, два дня искал. smile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01453 секунд с 7
ELECTRONIX ©2004-2016