با استفاده از تابع std::strcat در C++ دو رشتهٔ C-style را از ورودی بگیر، آنها را در یک بافر با اندازهٔ مناسب ادغام کن و رشتهٔ نتیجه و طول آن را چاپ کن؛ در صورت ناکافی بودن بافر پیغام خطا نمایش بده.
15.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 02:19 0.0
برای حل مسئله از هدر و توابع strlen، strcpy و strcat استفاده کنید: اندازهٔ بافر را برابر مجموع طولهای دو رشته بهعلاوهٔ یک برای کاراکتر تهی ('\0') قرار دهید، سپس رشتهٔ اول را با strcpy در بافر کپی کنید و رشتهٔ دوم را با strcat الحاق کنید؛ قبل از الحاق طولها را بررسی کنید تا از سرریز بافر جلوگیری شود. توجه داشته باشید اینگونه پردازشهای رشتهای در ساخت مفسرها/اینترپرتِرها و نیز هنگام آمادهسازی خروجیهای عددی در محاسبات علمی کاربردی هستند و در عمل استفاده از std::string یا نسخههای امنتر مانند strncat توصیه میشود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
قبل از استفاده از strcpy و strcat حتماً اندازهٔ بافر را برابر strlen(s1)+strlen(s2)+1 قرار بدهید و پیش از الحاق طولها را برای جلوگیری از سرریز چک کنید. توابع strcpy/strcat بهراحتی میتوانند بافر را سرریز کنند، بنابراین در عمل نسخههای امنتر مثل strncpy/strncat یا بهتر از همه std::string را در نظر بگیرید. همچنین برای خواندن ورودی از متدهایی استفاده کنید که طول را محدود میکنند (مثلاً getline یا fgets) و دقت کنید که strlen طول بایتها را میسنجد نه لزوماً تعداد کاراکترهای Unicode.
گزارش