یک برنامهٔ C بنویسید که یک رشتهٔ ورودی حاوی کد یک زبان ساده را گرفته و با استفاده از تابع strstr از هدر string.h تمام وقوعهای کلمات کلیدی "if"، "while" و "return" را پیدا کرده و اندیسهای شروع هرکدام را چاپ کند.
4.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:18 0.0
برای حل، از strstr در یک حلقه استفاده کنید: اشارهگر را از ابتدای رشته میفرستید و هر بار که strstr وقوعی بازگرداند، اندیس آن را با محاسبهٔ تفاوت اشارهگرها چاپ کرده و سپس اشارهگر را به جلو (مثلاً +strlen(keyword)) میبرید تا جستجو ادامه یابد. برای جلوگیری از تطابقهای درونکلمه (مثلاً "endif" یا "withdraw") بهتر است با توابعی مثل isalnum از هدر ctype.h یا بررسی کاراکترهای قبل و بعد وقوع، مرزهای کلمه را کنترل کنید. برنامه را با gcc کامپایل کرده و برای تست چند رشتهٔ نمونه شامل کدهای ساده به کار ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ کلیدی این است که در حلقه با strstr، بعد از هر یافتن واژه، اشارهگر را به جلو (مثلاً با strlen(keyword)) حرکت دهید تا جستجوی بعدی آغاز شود و اندیس را از تفاوت آدرس چاپ کنید. برای جلوگیری از مطابقت درونکلمه مانند endif یا withdraw، مرز واژه را با بررسی کاراکترهای قبل و بعد یا استفاده از isalnum کنترل کنید. همچنین در نظر بگیرید که ممکن است strstr با حروف بزرگ و کوچک تفاوت داشته باشد؛ در صورت نیاز، ورودی را یکدست کنید یا از مقایسهٔ بیتفاوت به بزرگ/کوچک استفاده کنید. در نهایت، چند رشتهٔ نمونه را با gcc کامپایل و اجرا کنید تا صحتِ کارکرد را تأیید کنید.
گزارش