عندما يتعلق الأمر بالحصول على مقاطع فرعية في لغة البرمجة C، هناك عدة طرق يمكن أن تساعدك في تحقيق ذلك بشكل فعّال. لنلقي نظرة على كيفية تحقيق هذا الهدف باستخدام لغة البرمجة C.
في المثال الذي قدمته، تريد الحصول على مقاطع فرعية من السلسلة “xxxx; yyyy”. أحد الطرق الشائعة لتحقيق ذلك هو باستخدام وظيفة strtok
التي توفرها C. تستخدم هذه الوظيفة لفصل السلسلة إلى أجزاء فرعية باستخدام فاصل معين.
c#include
#include
int main() {
char z[] = "xxxx; yyyy";
char* token;
// الحصول على الجزء الأول "xxxx"
token = strtok(z, ";");
char* x = token;
// الحصول على الجزء الثاني "yyyy"
token = strtok(NULL, ";");
char* y = token;
// طباعة النتائج
printf("x = \"%s\"\n", x);
printf("y = \"%s\"\n", y);
return 0;
}
في هذا المثال، يتم استخدام strtok
لتقسيم السلسلة إلى جزأين باستخدام الفاصل “;”. يتم تخزين الجزء الأول في المتغير x
والجزء الثاني في المتغير y
. يمكنك ثم استخدام هذه المتغيرات كمقاطع فرعية وفقًا لاحتياجاتك.
ومن الجدير بالذكر أنه يمكنك اللجوء إلى أساليب أخرى مثل استخدام وظائف من أسرة strstr
للبحث عن النصوص داخل السلسلة واستخراج المقاطع فرعية بناءً على ذلك. تعتمد الخيارات على المتطلبات الخاصة ببرنامجك والتي تفضلها.
المزيد من المعلومات
بالطبع، دعونا نوسع قليلاً على الطريقة التي تم استخدامها في المثال السابق، ولنلقي نظرة على بعض النقاط الهامة المتعلقة بالعمليات التي تم تنفيذها.
-
تضمين المكتبات اللازمة:
في الكود السابق، تم استخدام مكتبتين هامتين، وهما
و
، حيث توفر الأولى وظائف للإدخال والإخراج القياسي، بينما تحتوي الثانية على العديد من الوظائف المفيدة لمعالجة السلاسل.c#include
#include -
تعريف واستخدام المتغيرات:
تم تعريف المتغيرz
كمصفوفة من الطابعchar
لتخزين السلسلة “xxxx; yyyy”.cchar z[] = "xxxx; yyyy";
كما تم استخدام مؤشر
char* token
لتخزين النتائج المؤقتة أثناء تقسيم السلسلة. -
استخدام
strtok
:
strtok
هي وظيفة تقوم بتقسيم السلسلة إلى جزئين باستخدام فاصل محدد (في هذه الحالة، الفاصل هو “;”). يتم تحديد الجزء الأول من السلسلة باستخدامstrtok(z, ";")
، ويتم الحصول على الجزء الثاني باستخدامstrtok(NULL, ";")
.ctoken = strtok(z, ";"); char* x = token; token = strtok(NULL, ";"); char* y = token;
-
طباعة النتائج:
أخيرًا، تم استخدامprintf
لطباعة النتائج. يتم طباعة المقاطع الفرعيةx
وy
باستخدام التنسيق الصحيح%s
.cprintf("x = \"%s\"\n", x); printf("y = \"%s\"\n", y);
تذكير: يفضل دائمًا التحقق من حدود السلسلة وتفادي استخدام strtok
في حالات تتطلب الحفاظ على الحالة بين الاستدعاءات، حيث أن strtok
تعتبر وسيلة لاحتفاظ بحالة الفاصل بين الاستدعاءات.