The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"C/C++ 64bit. Глюк при сравнении чисел"
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "C/C++ 64bit. Глюк при сравнении чисел" +/
Сообщение от yerdnaemail (ok), 28-Ноя-08, 12:05 
>>size_t lSize, result;
>>...
>>lSize = ftell (pFile);
>
>Попробуй еще
>
>off_t lSize;
>...
>lSize = ftello (pFile);

Пробывал, ничего не изменилось.

>Количество считанных из файла байт потрясает. Дайте мне два таких винта :)
>Переменные типа size_t выводи с форматом %zu

И при таком раскладе все тоже самое
result = 18446744071619674112

>И включить -Wall чтобы gcc на printf() вываливал варнинг по поводу несоответствия >спецификатора и типа выводимого значения.

Все соответствует, Wall молчит как рыба.

----------
Повторюсь:
все работает так как надо, ошибки не выскакивают, то что я загрузил в память я потом с легкостью записываю обратно на винт, без всяких потерь данных.
Просто выскакивает такой глюк, если размер файла больше ~2гиг.
Единственный минус, так это то, что нельзя проверить сколько он считал.
Но как вариант я уже думаю просто форматировать result через sprintf c %u.

Кстати где-то вычитал, что feof() в таком месте не будет работать в любом случаи.
Весь инет облазил, толком ничего и не нашел как исправить этот глюк с fread.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
C/C++ 64bit. Глюк при сравнении чисел, yerdna, 24-Ноя-08, 05:19  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру