یک برنامه C بنویسید که یک خط متن شبیه به کدِ زبان C را خوانده و تمام شناسه‌ها (identifier) را با استفاده از توابع موجود در استخراج و هر شناسه را در یک خط جدا چاپ کند

5.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:16

0.0

برای انجام این کار، خط را با fgets در یک بافر ثابت بخوانید و سپس با پیمایش کاراکتر به کاراکتر حالت «درون شناسه» یا «خارج از شناسه» را پیگیری کنید؛ شروع شناسه وقتی است که کاراکتر اول حرف یا '_' باشد (با isalpha یا چک '_' ) و ادامهٔ شناسه شامل حروف، ارقام یا '_' است (با isalnum یا چک '_'). هنگام ورود به شناسه، کاراکترها را در یک بافر موقت جمع کنید تا به پایان شناسه رسیدید، سپس با پایان آن بافر را خاتمه داده و چاپ کنید. استفاده از توابع ctype.h مانند isalpha و isalnum و مدیریت سادهٔ بافرها و اندازهٔ ثابت برای سطح مبتدی کافی است؛ از تخصیص پیچیده حافظه خودداری کنید و طول بافر را مناسب انتخاب کنید.

توسط پژوهشگر در 220 روز قبل ساعت 02:16
دسته بندی ها: C for beginner
nima در 220 روز قبل ساعت 10:18

برای ایمنی استفاده از توابع ctype مانند isalpha و isalnum بهتر است کاراکترها را به unsigned char تبدیل کنید تا از رفتار نامطلوب با مقادیر منفی جلوگیری شود. همچنین مطمئن شوید با fgets بافر ثابتی را پر کند و در پایان هر خواندن رشته را با '\0' خاتمه دهد و خروجی را به‌درستی بررسی کند. در پیاده‌سازی ساده، شناسه‌ها از ابتدا بر پایه حرف یا '_' و ادامهٔ آن‌ها با حروف، اعداد یا '_' تشخیص داده می‌شود و هر شناسه در بافر موقّت جمع و چاپ می‌شود. اگر می‌خواهید خروجی تمیزتری داشته باشید، پس از fgets newline را حذف کنید یا هنگام چاپ از آن چشم‌پوشی کنید.

گزارش

1 پاسخ

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

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