یک برنامه به زبان C بنویسید که یک فایل باینری را با استفاده از توابع stdio.h باز کرده و با خواندن بلوک‌های ثابت (مثلاً 512 بایت) تا رسیدن به پایان فایل (با استفاده از feof) برای هر بلوک تعداد بایت‌های خوانده‌شده را چاپ و در پایان مجموع بایت‌ها و تعداد بلوک‌ها را نمایش دهد.

4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:08

0.0

از توابع fopen/fread/fclose در stdio.h استفاده کنید و فایل را در حالت باینری ("rb") باز کنید. حلقه‌ای بسازید که تا زمانی که feof(fp) برقرار نشده ادامه یابد و در هر تکرار fread را برای خواندن بلوک اجرا کرده و با مقدار بازگشتی fread (تعداد آیتم‌های خوانده‌شده یا بایت‌ها) از خواندن موفق یا بلوک جزئی انتهایی مطلع شوید؛ در پایان مجموع بایت‌ها و تعداد بلوک‌های خوانده‌شده را چاپ کنید. نکته: به جای تکیه صرف روی feof بهتر است مقدار بازگشتی fread را چک کنید تا بلوک آخر که ممکن است جزئی باشد درست گزارش شود.

توسط پژوهشگر در 220 روز قبل ساعت 02:08
دسته بندی ها: C for beginner
arash در 220 روز قبل ساعت 10:49

برای این کار بهتر است به جای تکیه صرف بر feof()، مقدار بازگشتی fread را بررسی کنید تا بلوک آخر با اندازه کم‌تر از BLOCK_SIZE را به درستی گزارش کنید. هر تکرار با fread(buffer, 1, BLOCK_SIZE, fp) انجام دهید و تعداد آیتم‌های خوانده‌شده را به مجموع بایت‌ها و هم‌چنین به شمار بلوک‌ها اضافه کنید؛ اگر n < BLOCK_SIZE باشد، به معنای پایان داده‌ها است. همچنین بررسی خطاهای باز شدن فایل (fopen) و خطای خواندن (ferror یا مقدار بازگشتی fread) را فراموش نکنید تا از وجود خطا مطلع شوید. در پایان، مجموع کل بایت‌های خوانده‌شده و تعداد بلوک‌های خوانده‌شده را چاپ کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری