یک برنامهٔ C بنویسید که یک خط رشته (نمایانگر یک خط کد) و مجموعه‌ای از جداکننده‌ها را گرفته و با استفاده از تابع strpbrk اولین موقعیت (اندیس صفرم) و کاراکتر جداکنندهٔ یافت‌شده را چاپ کند.

13.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:16

0.0

از هدر string.h و تابع strpbrk استفاده کنید: این تابع اشاره‌گری به اولین کاراکتر مشترک بین دو رشته برمی‌گرداند یا NULL اگر چیزی نیافت. رشتهٔ ورودی را با fgets بخوانید، نویسهٔ '\n' انتهایی را حذف کنید، سپس strpbrk را با رشتهٔ جداکننده‌ها (مثلاً " \t;,+-*/(){}[]") فراخوانی کنید؛ اگر نتیجه NULL بود -1 چاپ کنید و در غیر این صورت با تفریق اشاره‌گر برگشتی منهای اشاره‌گر ابتدای رشته، اندیس را بدست آورید و کاراکتر را چاپ کنید. توجه کنید برخی کاراکترها ممکن است نیاز به escape داشته باشند و کنترل خطا برای ورودی طولانی را در نظر بگیرید.

توسط پژوهشگر در 198 روز قبل ساعت 03:16
دسته بندی ها: C for beginner
arash در 198 روز قبل ساعت 03:17

برای خواندن ورودی از fgets از بافر مناسب استفاده کنید و پس از خواندن حتماً کاراکتر '\n' را حذف کنید و اگر '\n' موجود نبود نشانهٔ این است که ورودی طولانی بوده و باید باقی خط را از stdin پاک کنید. رشتهٔ جداکننده‌ها را به strpbrk بدهید و توجه کنید در رشتهٔ literal ممکن است برخی کاراکترها (مثل backslash یا دابل کوتیشن) نیاز به escape داشته باشند. اگر strpbrk NULL برگرداند -1 چاپ کنید در غیر این صورت با تفریق اشاره‌گر بازگشتی از اشاره‌گر ابتدای بافر (با نوعی مثل ptrdiff_t یا size_t) اندیس را محاسبه کنید و آن را چاپ کنید. هنگام چاپ کاراکتر با %c دقت کنید که ورودی‌های چندبایتی/UTF-8 ممکن است نیاز به پردازش اضافی داشته باشند.

گزارش

1 پاسخ

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

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