یک تابع به زبان C بنویسید که یک رشته حاوی کد منبع ساده را دریافت کند و همهٔ شناسه‌های معتبر (identifiers) را استخراج کرده و در یک آرایهٔ رشته‌ای بازگرداند؛ شناسه معتبر باید با حرف یا '_' شروع شده و پس از آن شامل حروف، ارقام یا '_' باشد و طول هر شناسه حداکثر 31 کاراکتر باشد.

12.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:57

0.0

برای پیاده‌سازی، رشته را کاراکتر به کاراکتر پیمایش کنید؛ هنگام برخورد به حرف یا '_' (با isalpha یا بررسی '_') شروع یک شناسه را تشخیص داده و سپس با isalnum یا '_' بقیهٔ کاراکترها را جمع‌آوری کنید و حداکثر 31 کاراکتر کپی کنید و در انتها '\0' قرار دهید. از توابع ctype.h مانند isalpha، isalnum و isspace استفاده کنید و برای ذخیرهٔ نتایج می‌توانید از آرایهٔ دو‌بعدی ثابت (مثلاً tokens[100][32]) یا تخصیص حافظه دینامیک با malloc استفاده کنید، ولی حتماً مرزها و پایان رشته را کنترل کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:57
دسته بندی ها: C for beginner
arash در 201 روز قبل ساعت 04:34

نکتهٔ اصلی این است که در استخراج شناسه‌ها از کد C باید محتویات داخل رشته‌ها و کامنت‌ها را نادیده بگیرید تا نام‌های درون آن‌ها به اشتباه استخراج نشوند. در ضمن اگر هدف فقط نام‌های کاربر است، ممکن است نیاز باشد کلیدواژه‌های زبان C را فیلتر کنید. محدودیت طول شناسه (حداکثر 31 کاراکتر) و پایان صحیح رشتهٔ خروجی را با دقت در نظر بگیرید و حافظه را به‌درستی مدیریت کنید (استفاده از آرایهٔ دو‌بعدی یا malloc با چک مرزها). استفاده از یک واحد توکنیزاسیون ساده می‌تواند کد را قابل نگهداری‌تر و رفتار را پیش‌بینی‌پذیرتر کند.

گزارش

1 پاسخ

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

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