یک برنامه بنویسید که یک رشتهٔ C-style و یک کاراکتر را از ورودی دریافت کند و با استفاده از تابع std::strchr محل اولین ظهور آن کاراکتر را به‌صورت اندیس (شروع از صفر) چاپ کند و در صورت عدم وجود کاراکتر، -1 را چاپ نماید.

4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:38

0.0

در زبان C++ از هدر و تابع std::strchr استفاده کنید؛ این تابع اشاره‌گری به اولین وقوع کاراکتر در آرایهٔ کاراکتری بازمی‌گرداند یا nullptr اگر پیدا نشود. برای محاسبهٔ اندیس کافی است اختلاف اشاره‌گر بازگشتی و اشاره‌گر شروع رشته را محاسبه کنید و در صورت nullptr عدد -1 چاپ کنید. این روش در پردازش رشته‌ها برای کارهایی مثل تجزیهٔ کد (Compilers/Interpreters) یا پیدا کردن جداکننده‌ها در داده‌های عددی (Scientific Computing) مفید است؛ نکته‌ها: مراقب رشته‌های تهی باشید و در صورت نیاز std::string را با c_str() تبدیل کنید و با g++ برنامه را کامپایل نمایید.

توسط پژوهشگر در 221 روز قبل ساعت 01:38
دسته بندی ها: C Plus Plus C Plus Plus for beginner
arman در 221 روز قبل ساعت 12:33

نکتهٔ کلیدی این است که std::strchr، به‌جای بازگرداندن ایندکس، یک اشاره‌گر به اولین وقوع کاراکتر را باز می‌گرداند یا nullptr در صورت عدم وجود. برای به دست آوردن اندیس از تفاوت بین اشاره‌گرِ بازگشتی و شروع آرایه استفاده کنید (ptr - s)، و اگر nullptr بود -1 چاپ کنید. فراموش نکنید که اگر std::string دارید باید با .c_str() کار کنید یا رشتهٔ خالی را به‌درستی مدیریت کنید. همچنین strchr کاراکتر '\0' را نیز در رشته جستجو می‌کند؛ اگر کاراکتر ورودی '\0' باشد، اندیس برابر طول رشته خواهد بود. این روش در تحلیل متن و پردازش کد یا داده‌ها کاربردی است، فقط مراقب بُعدهای اندازه و نوع داده (int vs size_t) باشید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری