یک برنامهٔ C بنویسید که یک رشتهٔ ورودی حاوی کد یک زبان ساده را گرفته و با استفاده از تابع strstr از هدر string.h تمام وقوع‌های کلمات کلیدی "if"، "while" و "return" را پیدا کرده و اندیس‌های شروع هرکدام را چاپ کند.

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

0.0

برای حل، از strstr در یک حلقه استفاده کنید: اشاره‌گر را از ابتدای رشته می‌فرستید و هر بار که strstr وقوعی بازگرداند، اندیس آن را با محاسبهٔ تفاوت اشاره‌گرها چاپ کرده و سپس اشاره‌گر را به جلو (مثلاً +strlen(keyword)) می‌برید تا جستجو ادامه یابد. برای جلوگیری از تطابق‌های درون‌کلمه (مثلاً "endif" یا "withdraw") بهتر است با توابعی مثل isalnum از هدر ctype.h یا بررسی کاراکترهای قبل و بعد وقوع، مرزهای کلمه را کنترل کنید. برنامه را با gcc کامپایل کرده و برای تست چند رشتهٔ نمونه شامل کدهای ساده به کار ببرید.

توسط پژوهشگر در 221 روز قبل ساعت 01:18
دسته بندی ها: C for beginner
arman در 221 روز قبل ساعت 13:45

نکتهٔ کلیدی این است که در حلقه با strstr، بعد از هر یافتن واژه، اشاره‌گر را به جلو (مثلاً با strlen(keyword)) حرکت دهید تا جستجوی بعدی آغاز شود و اندیس را از تفاوت آدرس چاپ کنید. برای جلوگیری از مطابقت درون‌کلمه مانند endif یا withdraw، مرز واژه را با بررسی کاراکترهای قبل و بعد یا استفاده از isalnum کنترل کنید. همچنین در نظر بگیرید که ممکن است strstr با حروف بزرگ و کوچک تفاوت داشته باشد؛ در صورت نیاز، ورودی را یک‌دست کنید یا از مقایسهٔ بی‌تفاوت به بزرگ/کوچک استفاده کنید. در نهایت، چند رشتهٔ نمونه را با gcc کامپایل و اجرا کنید تا صحتِ کارکرد را تأیید کنید.

گزارش

1 پاسخ

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

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