یک تابع در زبان C بنویسید که با استفاده از تابع strchr از هدر string.h اولین وقوع یکی از اپراتورهای '+', '-', '*', '/' را در یک رشته حاوی کد منبع پیدا کرده و اندیس آن را بازگرداند (در صورت نبودن، -1 برگردانید).
16.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:53 0.0
برای حل این مسأله هدر string.h را وارد کنید و برای هر کدام از کاراکترهای اپراتور از strchr استفاده کنید تا اشارهگر به اولین وقوع آن در رشته را بگیرید؛ سپس با کم کردن اشارهگر برگشتی از آدرس اولیه رشته، اندیس را محاسبه کنید. اگر همه فراخوانیهای strchr مقدار NULL دادند، مقدار -1 برگردانید. این روش در طراحی یک lexer ساده برای مترجمها یا مفسرها کاربرد دارد؛ دقت کنید که هنگام تفریق اشارهگرها نوع نتیجه را مناسب انتخاب کنید و بررسی NULL قبل از انجام عملیات اشارهگری را فراموش نکنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این وظیفه از strchr برای هر کدام از کاراکترهای '+', '-', '*', '/' استفاده میکند تا اولین وقوع آنها را در رشته بیابد و اندیس آن را بازگرداند. با این وجود برای یافتن نخستین وقوع هر کدام به طور همزمان، میتوانید از strpbrk استفاده کنید که بهطور مستقیم با مجموعه '+-*/' کار میکند و اشارهگر به اولین وقوع را بازمیگرداند. قبل از تفریق اشارهگرها به مبدا رشته، وجود NULL را بررسی کنید و اگر هیچکدام پیدا نشد -1 بازگردانید؛ اندیس را نیز با تفاوت اشارهگر یافتشده و آغاز رشته محاسبه کنید. این رویکرد برای ساخت یک lexer ساده مناسب است و در صورت نیاز میتواند با توضیحهای کوچک بهینهسازی شود.
گزارش