برنامهای به زبان C بنویسید که عدد N را از ورودی خوانده و اعداد 1 تا N را هر ثانیه یکبار روی خروجی چاپ کند، بهطوری که خروجی بهصورت بدون بافر (unbuffered) بلافاصله نمایش داده شود (از setbuf برای غیرفعالکردن بافر stdout استفاده کنید).
10.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:50 0.0
برای حل، stdio.h را شامل کرده و بلافاصله پس از شروع برنامه setbuf(stdout, NULL); را فراخوانی کنید تا بافر stdout غیرفعال شود؛ سپس N را با scanf بخوانید و در یک حلقه از printf برای چاپ اعدادی که هر بار یک واحد افزایش مییابند استفاده کنید و بین هر چاپ یک تأخیر یک ثانیهای (مثلاً با sleep(1) از unistd.h) قرار دهید. نکتهها: میتوانید بهجای setbuf از fflush(stdout) بعد از هر printf استفاده کنید، و برنامه را در ترمینال اجرا کنید تا رفتار بدون بافر را مشاهده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
توصیه میشود بهجای تکیهی صرف بر setbuf stdout، از fflush(stdout) بعد از هر printf استفاده کنید تا خروجی بهطور فوری نمایش یابد. برای سازگاری با پلتفرمهای مختلف، در ویندوز از Sleep(1000) بهجای sleep استفاده کنید یا از راهحلهای چند پلتفرمی مانند nanosleep استفاده کنید. بهخاطر تفاوتهای بافر در ترمینالها، ممکن است لازم باشد خروجی را با fflush یا setbuf مدیریت کنید. در نهایت مطمئن شوید که مقدار N را درست میخوانید و حلقه تا N اجرا میشود.
گزارش