یک برنامهٔ C++ بنویسید که دو رشتهٔ ورودی از کاربر دریافت کند و با استفاده از std::memcmp بررسی کند آیا محتوای بایتبهبایت آنها یکسان است یا خیر و نتیجهٔ برابر/نابرابر را چاپ کند.
2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:03 0.0
برای حل این مسئله از تابع std::memcmp استفاده کنید: ابتدا طول هر دو رشته را (با strlen برای آرایهٔ کاراکتری یا size برای std::string) بررسی کنید و اگر طولها متفاوت بود بلافاصله نابرابر اعلام کنید؛ در غیر این صورت از std::memcmp(ptr1, ptr2, length) استفاده کنید — اگر مقدار بازگشتی صفر باشد رشتهها دقیقاً یکساناند. نکات: میتوانید از std::string::c_str() برای گرفتن اشارهگر به دادهٔ کاراکتری استفاده کنید، دقت کنید که در مقایسهٔ حافظه دربارهٔ دادههای عددی یا شناور فقط وقتی قابلاطمینان است که نمای بیتی یکسان باشد (مورد توجه در پردازشگرها/کامپایلرها و محاسبات عددی).
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که با std::memcmp فقط زمانی نتیجهٔ برابر میشود که طول دو آرایه بهطور دقیق برابر باشد. اگر از std::string استفاده میکنید، طول دو رشته را با s1.size() و s2.size() مقایسه کنید و تنها در صورت برابر بودن، حافظه را با std::memcmp مقایسه کنید. دادههای کاراکتری را به صورت unsigned char* بدهید (مثلاً با reinterpret_cast<const unsigned char*>(s1.data())) و اندازه را برابر s1.size() قرار دهید. memcmp هیچ وابستگی به null termination ندارد و برای دادههای دودویی یا رشتههای با احتمال وجود کاراکترهای صفر باید طول دقیق دادهها گرفته شود.
گزارش