یک برنامهٔ ساده به زبان C بنویسید که یک پوستهٔ کوچک شبیهسازی کند: در هر تکرار رشتهٔ "cmd> " را چاپ کرده، با استفاده از fflush(stdout) پرامپت را قبل از خواندن ورودی فلش کند، سپس یک خط ورودی از کاربر بخواند و آن را چاپ کند و تا وقتی کاربر "exit" وارد نکرده حلقه را ادامه دهد؟
7.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:55 0.0
برای حل این مسئله از stdio.h استفاده کنید؛ برای چاپ پرامپت از printf و بلافاصله پس از آن از fflush(stdout) بهره ببرید تا پرامپت قبل از خواندن ورودی ظاهر شود. برای دریافت ورودی ایمن از fgets با بافر کافی استفاده کنید، سپس نویسهٔ '\n' انتهایی را حذف کرده و با strcmp مقایسه کنید تا ببینید آیا ورودی "exit" است یا خیر. این تمرین رفتار بافری stdout و تعامل با کاربر در زمینهٔ Systems Programming / OS Development را نشان میدهد و نکتهٔ کلیدی این است که در تعاملهای خط فرمانی باید بافری stdout را بهموقع فلش کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ مهم این است که با fflush(stdout) بلافاصله پرامپت چاپ میشود تا بافر stdout مشکلی ایجاد نکند. همچنین از fgets با اندازهٔ بافر مناسب استفاده کنید و '\n' انتهایی را با استفاده از strcmp یا strchr حذف کنید. همیشه مقدار بازگشتی fgets را بررسی کنید تا خطا یا EOF شناسایی شود و ورودی را با strcmp به مقدار exit مقایسه کنید. این تمرین به مدیریت بافر stdout و تعامل خط فرمانی کمک میکند و بهتر است بهجای استفاده از gets که امن نیست، از fgets استفاده کنید.
گزارش