#c #mingw
#c #mingw
Вопрос:
Я использую _stati64()
в своем файловом менеджере, чтобы я мог получить размер файлов более 4 ГБ.
Мой код выглядит нормально:
struct _stati64 buf;
_stati64(ep->d_name, amp;buf);
Дело в том, что иногда _stati64
работает должным образом, иногда я получаю огромные значения. Я даже проверил с помощью gdb, выполнив print buf
и все еще получаю неверные значения, так что проблема, похоже, не в моем коде.
Кто-нибудь испытывал нечто подобное?
Комментарии:
1. Показать весь код. (и убедитесь, что ваш _stati64 () не выходит из строя)
2.Вы получаете неверные значения для чего? Какие значения являются неправильными и каковы фактические значения, которые вы получаете?
3. Неважно, я обнаружил проблему сразу после публикации (и я потратил 1 час на ее поиски). Проблема заключалась в моем коде, а не в функции _stati64, я скопировал ее из другой части кода и передал неправильный путь :/
Ответ №1:
Вам нужно проверить возвращаемое значение _stati64
. Если оно не равно 0, вы не получите действительных результатов.
Если ваш фактический код проверяет возвращаемое значение, ошибка, скорее всего, заключается в том, что вы каким-то образом повреждаете структуру после _stati64
возврата.
Последняя возможность заключается в том, что «неправильные значения», которые вы получаете, на самом деле являются действительными и хорошими значениями. Я обновлю свой ответ, если вы обновите вопрос, указав, какие значения вы получаете.
Комментарии:
1. Да, это было так, я не стал проверять наличие ошибок, потому что я просто заменил обычный stat() на _stati64, и при этом я использовал неправильную переменную для path :/ Это действительно расстраивает, когда вы находите ответ на проблему сразу после публикации, хотя вы можете потратить час, прежде чем пытаться выяснить, что не так 🙂