یک برنامه C بنویسید که یک خط متن شبیه به کدِ زبان C را خوانده و تمام شناسهها (identifier) را با استفاده از توابع موجود در استخراج و هر شناسه را در یک خط جدا چاپ کند
5.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:16 0.0
برای انجام این کار، خط را با fgets در یک بافر ثابت بخوانید و سپس با پیمایش کاراکتر به کاراکتر حالت «درون شناسه» یا «خارج از شناسه» را پیگیری کنید؛ شروع شناسه وقتی است که کاراکتر اول حرف یا '_' باشد (با isalpha یا چک '_' ) و ادامهٔ شناسه شامل حروف، ارقام یا '_' است (با isalnum یا چک '_'). هنگام ورود به شناسه، کاراکترها را در یک بافر موقت جمع کنید تا به پایان شناسه رسیدید، سپس با پایان آن بافر را خاتمه داده و چاپ کنید. استفاده از توابع ctype.h مانند isalpha و isalnum و مدیریت سادهٔ بافرها و اندازهٔ ثابت برای سطح مبتدی کافی است؛ از تخصیص پیچیده حافظه خودداری کنید و طول بافر را مناسب انتخاب کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای ایمنی استفاده از توابع ctype مانند isalpha و isalnum بهتر است کاراکترها را به unsigned char تبدیل کنید تا از رفتار نامطلوب با مقادیر منفی جلوگیری شود. همچنین مطمئن شوید با fgets بافر ثابتی را پر کند و در پایان هر خواندن رشته را با '\0' خاتمه دهد و خروجی را بهدرستی بررسی کند. در پیادهسازی ساده، شناسهها از ابتدا بر پایه حرف یا '_' و ادامهٔ آنها با حروف، اعداد یا '_' تشخیص داده میشود و هر شناسه در بافر موقّت جمع و چاپ میشود. اگر میخواهید خروجی تمیزتری داشته باشید، پس از fgets newline را حذف کنید یا هنگام چاپ از آن چشمپوشی کنید.
گزارش