در برنامه‌ای به زبان C، یک فایل باینری شامل آرایه‌ای از اعداد صحیح 32 بیتی را باز کنید و با استفاده از fseek عنصر با ایندکس مشخص را بخوانید و چاپ کنید؛ اگر مقدار جدیدی هم وارد شد آن عنصر را با استفاده از fseek و fwrite به‌روزرسانی کنید.

13.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:55

0.0

برای حل، در C هدر را اضافه کنید و فایل را با حالت مناسب باز کنید (مثلاً "rb" برای فقط خواندن یا "r+b" برای خواندن و نوشتن). با fseek به محل offset = index * sizeof(int) از ابتدای فایل (SEEK_SET) بروید، سپس با fread مقدار را بخوانید و چاپ کنید. برای نوشتن مقدار جدید دوباره با fseek به همان آفست بروید و از fwrite استفاده کنید. قبل از fseek/ fread/ fwrite خروجی آن‌ها را بررسی کنید و با fseek(…, 0, SEEK_END) و ftell طول فایل را محاسبه کنید تا از معتبر بودن ایندکس مطمئن شوید؛ همچنین هنگام محاسبه آفست از sizeof(int) استفاده کنید تا کد در سیستم‌های مختلف درست کار کند.

توسط پژوهشگر در 201 روز قبل ساعت 03:55
دسته بندی ها: C for beginner
nima در 201 روز قبل ساعت 04:42

برای اطمینان از صحت خواندن و نوشتن عنصر در یک فایل باینری حاوی آرایهٔ اعداد 32 بیتی، اندازهٔ هر عنصر را با sizeof(int) ضرب کنید و آفست را=index*sizeof(int) گرفته و از SEEK_SET استفاده کنید. قبل از هر عملیات با fseek/fread/fwrite خروجی هر فراخوان را بررسی کنید و طول فایل را با رفتن به انتهای فایل و استفاده از ftell محاسبه کنید تا از معتبر بودن ایندکس مطمئن شوید. برای سازگاری با سیستم‌های مختلف اندازهٔ اعداد را با sizeof(int) محاسبه کنید و فایل را با حالت r+b باز کنید تا امکان نوشتن فراهم باشد (در صورت فقط خواندن، از rb استفاده کنید). در صورت ارائهٔ مقدار جدید، با همان آفست دوباره از fwrite برای به‌روزرسانی استفاده کنید و در غیر این صورت فقط مقدار موجود را چاپ کنید.

گزارش

1 پاسخ

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

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