كيفية تقسيم الأوتار باستخدام strtok () في البرمجة بلغة سي؟

Kyfyt Tqsym Alawtar Bastkhdam Strtok Fy Albrmjt Blght Sy



تقسيم الأوتار مهم لأسباب مختلفة مثل معالجة النصوص أو تحليل البيانات أو التحليل ، وتوفر لغة البرمجة C طرقًا عديدة للتعامل مع هذه المهمة. ومع ذلك ، فإن وظيفة C الأكثر شيوعًا هي التي تسمح سلسلة الانقسام إلى عدة رموز بواسطة محدد محدد هو strtok () . كونها وظيفة مكتبة ، فهي متوفرة في مكتبة C القياسية التي تدعم عمليات السلاسل.

كيف تعمل وظيفة strtok ()؟

لتقسيم سلسلة باستخدام strtok () ، عليك أولاً أن تفهم كيف يعمل. ال strtok () يقرأ سلسلة الإدخال حرفًا بحرف حتى تأتي عبر محدد. بمجرد العثور على المحدد ، strtok () يستبدلها بحرف فارغ '\ 0' ، مما يؤدي إلى تقسيم السلسلة الأصلية بشكل فعال إلى جزأين. ثم يتم إرجاع مؤشر إلى الحرف الأول من السلسلة بواسطة الوظيفة. ال strtok () صيغة الوظيفة هي:

strtok ( شار * شارع و مقدار ثابت شار * أشارك ) ؛

ال strtok () تأخذ الوظيفة وسيطين - مؤشر إلى الرمز الأول في مجموعة الرموز وسلسلة تحتوي على أحرف المحدد. تقوم بإرجاع مؤشر إلى الرمز المميز التالي ، والذي يبدأ فورًا بعد المحدد الذي يقسم الرمز المميز الأخير. تقوم بإرجاع NULL إذا لم يكن هناك المزيد من الرموز المميزة.







كيفية تقسيم الأوتار باستخدام Strtok () في البرمجة بلغة سي؟

هنا مثال على كيفية الاستخدام strtok () لتقسيم سلسلة:



# تضمين

# تضمين

int رئيسي ( ) {

شار مدخل [ ] = 'Linux ، تلميح' ؛

شار * رمز ؛

رمز = strtok ( مدخل و '،' ) ؛

بينما ( رمز ! = باطل ) {

printf ( '٪س ' و رمز ) ؛

رمز = strtok ( باطل و '،' ) ؛

}

يعود 0 ؛

}

في المثال أعلاه ، نعلن أولاً عن المؤشر إلى حرف char. ثم نستخدم strtok () لتقسيم سلسلة الإدخال إلى رموز مميزة. أول دعوة لـ strtok () يأخذ وسيطتين: سلسلة الإدخال وسلسلة المحدد '،'. الرمز المميز الأول ، 'Linux' ، هو ذلك strtok () يعود كمؤشر ل . ثم نستخدم حلقة while للتكرار خلال سلسلة الإدخال باستخدام strtok () باستخدام مؤشر NULL لمواصلة تقسيم الرموز المميزة المتبقية. يتم تمرير سلسلة المحدد مرة أخرى كوسيطة إلى strtok () للإشارة إلى أحرف المحدد.



انتاج |





حدود وظيفة Strtok ()

1: يعدل السلسلة الأصلية

ال strtok () لا تقوم الدالة بإرجاع نسخة من السلسلة ؛ بدلاً من ذلك ، يقوم بتعديل السلسلة الأصلية. لذلك ، إذا كنت بحاجة إلى إصدار غير معدل من السلسلة بعد تقسيمها ، فيجب عليك عمل نسخة من السلسلة الأصلية قبل استدعاء strtok () .



2: غير متزامن

أحد القيود الهامة ل strtok () هو أنه لا يمكن استخدامه إلا على سلسلة واحدة في كل مرة. بمعنى آخر ، لا يمكنك استخدامه لترميز سلاسل متعددة في وقت واحد.

3: سعة محدودة

آخر قيد محتمل هو أن strtok () لديه قدرة محدودة على التعامل مع المحددات المتكررة. على سبيل المثال ، إذا كانت السلسلة تحتوي على مسافات متتالية بين الكلمات ، strtok () يعاملها كمحدد واحد. للتعامل مع مثل هذه الحالات ، سيتعين عليك استخدام نهج مختلف.

خاتمة

ال strtok () الوظيفة هي وظيفة مفيدة للغاية لتقسيم السلاسل في برمجة لغة سي. يأخذ سلسلة إدخال وسلسلة محددة ويعيد مؤشر إلى الرمز المميز الأول الموجود في سلسلة الإدخال. strtok () مدمر ، وبالتالي إذا كنت بحاجة إلى الحفاظ على سلامة السلسلة الأصلية ، يُنصح بإنشاء نسخة مكررة منها بدلاً من ذلك. الآن بعد أن عرفت كيفية القيام بذلك ، يمكنك قص أي سلسلة إلى قطع أصغر للمعالجة.