با استفاده از std::memmove تابعی در C++ بنویسید که یک رشتهٔ C-style و موقعیت و طول یک زیررشته را گرفته و آن زیررشته را بهطور درجا حذف کند و رشتهٔ حاصل را چاپ نماید.
15.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:54 0.0
برای حل از رشتههای C-style (char*) استفاده کنید و هدر (یا ) را برای std::memmove شامل کنید؛ برای خروجی از بهره ببرید. ابتدا با strlen طول رشته را بدست آورید، موقعیت و طول را در محدوده بررسی کنید و سپس با یک فراخوانی memmove بایتهای پس از زیررشته را به جای شروع زیررشته منتقل کنید (حتی ترمیناتور '\0' را نیز منتقل کنید) تا حذف درجا انجام شود — مثال الگو: memmove(s+pos, s+pos+len, remaining+1). مراقب همپوشانی حافظه و استفاده از نوع size_t برای ایندکسها باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای حذف درجا با memmove، ابتدا طول رشته را با strlen محاسبه کنید و صحت مقادیر pos و len را بررسی کنید تا pos در بازه [0، n] باشد و len ≤ n - pos. سپس باقیماندهٔ بایتها را به سمت چپ حرکت دهید: memmove(s + pos, s + pos + len, n - (pos + len) + 1). توجه کنید memmove از همپوشانی حافظه پشتیبانی میکند و با انتقال ترمیناتور '\0'، رشتهٔ جدید بهدرستی پایان مییابد. همچنین با استفاده از size_t برای اندیسها از مشکلات منفی شدن جلوگیری کنید.
گزارش