PDA

نسخه کامل مشاهده نسخه کامل : مشکل برای خواندن int از داخل فایل



sin66x
18-11-2008, 05:04
سلام
برای کار با فایلها در ++C مشکلی دارم که نمی فهمم از کجاست. وقتی از توی یک فایل می خوام بخونم اگر به صورت کاراکتری بخونم جواب درسته اما اگر int بخونم اعداد مورد نظر نمیاد. مثلا یک فایل که با MZ شروع شده رو اگر با int بخونم(دو بایتی) دو بایت اول (MZ را) صفر می خواند! اما اگر با [char[2 بخوانم درسته!

hamidreza_buddy
18-11-2008, 16:25
فکر می کنم چون فقط رشته اسکی می گیرد و چون MZ رقم نیست به مشکل مواجه می شود.
مثل اینکه scanf کنید و بعدش به جای عدد MZ بزنید!
از توابع read و write که برای خواندن و نوشتن باینری هستند استفاده کنید.

aryan1423
18-11-2008, 23:00
لطفا درباره ی خوندن و نوشتن باینری توضیح می دید؟(اگه میشه کدشو بزارید):11:

hamidreza_buddy
20-11-2008, 01:41
خوندن با read(buffer,size)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نوشتن با write(buffer,size)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

aryan1423
23-11-2008, 16:19
برای اطلاعات ارزشمندتان ممنون!:11::11::11::11::11:
من مدت ها دنبال چنین تابعی بودم.
راستی برای پیدا کردن سایز data.bin باید چه کرد؟

hamidreza_buddy
24-11-2008, 02:09
قاعدتاً باید از API سیستم عامل استفاده کرد. چون سیستم عامل که وظیفه مدیریت فایل رو داره.
مثلاً توی ویندوز بوسیله این تابع API میشه این کارو انجام داد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ولی یه راه دیگه وجود داره. اینجوری که فایل رو در مود باینری باز کرده و اشاره گر فایل رو بوسیله تابع fseek به انتهای فایل می بریم. بعد بوسیله تابع ftell مکان آن را به دست می آوریم. این مقدار تعداد بایت های فایل ماست!


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توضیحی درباره تابع fseek:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کد زیر هم همون بالاییه فقط به صورت یه تابع آماده نوشته شده:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید