یک برنامهٔ C بنویسید که دو شناسه (identifier) را از ورودی بگیرد و با استفاده از تابع strcoll از کتابخانهٔ string.h ترتیب فرهنگمحور (locale-aware) آنها را تعیین کرده و بگوید کدام یک بزرگتر، کوچکتر یا مساوی است.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:14 0.0
برای حل، رشتهها را با fgets یا scanf بخوانید، با setlocale(LC_COLLATE, "") از ترتیب محلی را فعال کنید و سپس از strcoll برای مقایسهٔ فرهنگمحور استفاده کنید؛ خروجی باید بگوید اولین شناسه قبل/بعد/مساوی با دوم است. نکات: انتهای خط را حذف کنید، از string.h و locale.h استفاده کنید و برنامه را با gcc کامپایل کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای کارکرد صحیح ترتیب فرهنگمحور با strcoll، قبل از هر مقایسه از setlocale(LC_COLLATE, "") استفاده کنید تا تنظیمات محلی فعال شوند. اگر با fgets میخوانید، انتهای خط را با حذف '\n' حذف کنید تا مقایسه درست انجام شود. از بافر با اندازهٔ امن استفاده کنید تا از overflow جلوگیری شود. نتیجهٔ strcoll منفی/صفر/مثبت است و میتوانید خروجی برنامه را به صورت «شناسهٔ اول قبل/مساوی/بعد از دوم است» بنویسید؛ همچنین برای فارسی ممکن است به نصب locale مرتبط مانند fa_IR.UTF-8 نیاز باشد.
گزارش