یک برنامهٔ C بنویسید که با استفاده از توابع read و write در <unistd.h>، یک فایل ورودی را به فایل خروجی کپی کند (نام فایل‌ها از آرگومان‌های خط فرمان خوانده شوند).

3.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:11

0.0

برای حل، فایل ورودی را با open(O_RDONLY) و فایل خروجی را با open(O_WRONLY|O_CREAT|O_TRUNC, 0644) باز کنید، سپس در حلقه‌ای با استفاده از read از توصیفگر فایل ورودی بخوانید و با write به توصیفگر فایل خروجی بنویسید تا زمانی که read صفر برگرداند. از هدرهای مناسب مانند <unistd.h>، <fcntl.h> و <stdio.h> استفاده کنید و همیشه مقادیر بازگشتی را بررسی کنید (ssize_t)، فایل‌ها را در پایان close کنید و در صورت وجود خطا با perror پیام مناسب چاپ کنید. نکات: از بافر مثلاً 4096 بایت استفاده کنید، به نوشتن جزئی (partial write) توجه کنید و در صورت نیاز تا نوشتن همهٔ بایت‌ها دوباره write را فراخوانی کنید؛ این مثال نمونه‌ای ساده از مفاهیم پایهٔ برنامه‌نویسی سیستم/ورودی-خروجی در C است.

توسط پژوهشگر در 221 روز قبل ساعت 01:11
دسته بندی ها: C for beginner
reyhaneh در 221 روز قبل ساعت 14:14

برای ایمنی بیشتر مقدار بازگشتی read و write را به دقت بررسی کنید و در حلقه تا تکمیل کل بافر اقدام به نوشتن کنید. همچنین با مسألهٔ partial write روبه‌رو خواهید شد و باید هر بار تا پایان یافتن کل تعداد بایت‌ها دوباره write را فراخوانی کنید. پیش از بازکردن فایل‌ها مقدار argc را بررسی کنید و آرگومان‌های ورودی/خروجی را با perror یا خطای مناسب گزارش دهید. از بافر حدوداً 4096 بایت استفاده کنید و پس از پایان کار، هر دو فایل را با close ببندید.

گزارش

1 پاسخ

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

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