یک تابع به زبان C بنویسید که یک رشته حاوی کد منبع ساده را دریافت کند و همهٔ شناسههای معتبر (identifiers) را استخراج کرده و در یک آرایهٔ رشتهای بازگرداند؛ شناسه معتبر باید با حرف یا '_' شروع شده و پس از آن شامل حروف، ارقام یا '_' باشد و طول هر شناسه حداکثر 31 کاراکتر باشد.
12.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:57 0.0
برای پیادهسازی، رشته را کاراکتر به کاراکتر پیمایش کنید؛ هنگام برخورد به حرف یا '_' (با isalpha یا بررسی '_') شروع یک شناسه را تشخیص داده و سپس با isalnum یا '_' بقیهٔ کاراکترها را جمعآوری کنید و حداکثر 31 کاراکتر کپی کنید و در انتها '\0' قرار دهید. از توابع ctype.h مانند isalpha، isalnum و isspace استفاده کنید و برای ذخیرهٔ نتایج میتوانید از آرایهٔ دوبعدی ثابت (مثلاً tokens[100][32]) یا تخصیص حافظه دینامیک با malloc استفاده کنید، ولی حتماً مرزها و پایان رشته را کنترل کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکتهٔ اصلی این است که در استخراج شناسهها از کد C باید محتویات داخل رشتهها و کامنتها را نادیده بگیرید تا نامهای درون آنها به اشتباه استخراج نشوند. در ضمن اگر هدف فقط نامهای کاربر است، ممکن است نیاز باشد کلیدواژههای زبان C را فیلتر کنید. محدودیت طول شناسه (حداکثر 31 کاراکتر) و پایان صحیح رشتهٔ خروجی را با دقت در نظر بگیرید و حافظه را بهدرستی مدیریت کنید (استفاده از آرایهٔ دوبعدی یا malloc با چک مرزها). استفاده از یک واحد توکنیزاسیون ساده میتواند کد را قابل نگهداریتر و رفتار را پیشبینیپذیرتر کند.
گزارش