الانتقال إلى المحتوى الرئيسي

كيفية تحويل سلسلة إلى صفيف في ج

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

واحدة من أكثر الطرق شيوعا لتحويل سلسلة إلى صفيف هو استخدام وظيفة سترتوك. وظيفة سترتوك يقسم سلسلة إلى كلمات منفصلة أو أحرف مع فاصل محدد. لتحويل سلسلة إلى مصفوفة ، يكفي تحديد السلسلة كوسيطة أولى للدالة ، وتحديد حرف الفاصل كوسيطة ثانية. نتيجة للوظيفة ، يتم الحصول على مصفوفة من السلاسل أو الأحرف ، يمثل كل منها عنصرا منفصلا في المصفوفة.

مثال على استخدام وظيفة سترتوك لتحويل سلسلة إلى صفيف:

شار شارع [] = " مرحبا, العالمية!";

شار * رمز = سترتوك (شارع،"،");

بعد تنفيذ هذا الرمز ، سيحتوي متغير الرمز المميز على مؤشر للكلمة الأولى ("مرحبا"). للحصول على بقية الكلمات أو الأحرف ، كرر المكالمة إلى وظيفة سترتوك ، ويمر فارغة كوسيطة الأولى:

الرمز المميز = سترتوك (فارغ،"،");

نتيجة لهذه العمليات ، سيحتوي متغير الرمز المميز بالتتابع على مؤشرات للكلمات " العالم!"ولاغية-علامة على نهاية المصفوفة.

  1. وصف المهمة
  2. باستخدام وظائف خاصة
  3. استخدام الدورات
  4. تحويل الأرقام والرموز
  5. تحويل الأرقام
  6. تحويل الأحرف
  7. كيفية معالجة سلسلة فارغة
  8. أمثلة الاستخدام
  9. سؤال وجواب

وصف المهمة

عند تطوير البرامج في اللغة ج ، في بعض الأحيان هناك حاجة لتحويل سلسلة إلى مجموعة من الأحرف. يتيح لك تحويل سلسلة إلى مصفوفة العمل مع كل حرف على حدة أو تغييرها أو إجراء أي عمليات أخرى.

تتمثل عملية تحويل سلسلة إلى مصفوفة من الأحرف في أنه سيتم تخزين كل حرف من السلسلة في خلية منفصلة من المصفوفة. وبالتالي ، يمكن الوصول إلى كل حرف من خلال فهرسه في المصفوفة ، على سبيل المثال ، لإجراء بعض العمليات أو المقارنة.

يمكن استخدام طرق مختلفة لتحويل سلسلة إلى مجموعة من الأحرف. واحد منهم يستخدم حلقة تقوم بمسح كل حرف من سلسلة وتخزينها في خلية منفصلة من المصفوفة.

على سبيل المثال ، ضع في اعتبارك الكود التالي:

شار شارع [] ="سلسلة سبيل المثال";

طول الباحث = حجم (شارع) / حجم(شارع[0]);

شار آر [طول];

ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {

[أنا] = شارع [أنا];

}

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

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

تحويل سلسلة إلى مجموعة من الأحرف هو عملية مفيدة في اللغة ج ، لأنها تتيح لك العمل بشكل أكثر مرونة مع كل حرف من السلسلة بشكل منفصل. هذا مفيد بشكل خاص عند العمل مع البيانات النصية ، حيث يلزم معالجة كل حرف.

باستخدام وظائف خاصة

في اللغة ج ، هناك وظائف خاصة تسمح لك بتحويل السلاسل إلى صفائف وتنفيذ عمليات مختلفة معهم.

لبدء العمل مع وظائف السلسلة ، تحتاج إلى توصيل ملف الرأس " سلسلة.ح " باستخدام # تضمين التوجيه:

# تشمل

واحدة من أكثر الوظائف المفيدة هي وظيفة سترتوك ، والتي تسمح لك بتقسيم سلسلة إلى رموز منفصلة باستخدام فاصل محدد.

شار شارع [] = "سبليت ، سلسلة ، إلى ، الرموز";

محدد شار []="،";

char *token;

token = strtok(str, delimiter);

while (token != NULL) {

printf("%s

", token);

token = strtok(NULL, delimiter);

}

В результате работы этого кода будут выведены все токены в отдельных строках:

разделить

строку

на

токены

وظيفة أخرى تستخدم بشكل متكرر هي وظيفة سكانف ، الذي يوزع سلسلة ويعين القيم لمتغيرات مختلفة على أساس تنسيق معين:

شار شارع [] = "42 3.14 مرحبا";

عدد الأسطوانات;

تعويم بي;

كلمة شار [10];

سسكانف (ستر ، "٪ د ٪ و ٪ ق " ، # ، π ، كلمة);

ونتيجة لذلك ، سيتم تعيين المتغيرات الأسطوانات ، بي وورد القيم 42 ، 3.14 و "مرحبا" على التوالي.

هذه ليست سوى اثنين من العديد من الوظائف التي تسمح لك لتحويل سلسلة إلى صفيف وتنفيذ عمليات مختلفة معها. ادرس بعناية أمثلة التوثيق والتحكم لإتقان وظائف العمل مع السلاسل في لغة سي بشكل كامل.

استخدام الدورات

في ال لغة ج ، هناك عدة طرق لتحويل سلسلة إلى مصفوفة. واحدة من أسهل الطرق هي استخدام الحلقات.

عند استخدام الحلقات ، يجب أن يؤخذ طول السلسلة في الاعتبار. للقيام بذلك ، يمكنك استخدام وظيفة سترلين() من السلسلة.مكتبة ح.

يوضح مثال التعليمات البرمجية التالية كيفية تحويل سلسلة إلى صفيف باستخدام حلقة:

# تشمل 

# تشمل

كثافة العمليات الرئيسية () {

شار شارع [] ="سلسلة سبيل المثال";

كثافة العمليات طول = سترلين (شارع);

شار آر [طول];

ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {

[أنا] = شارع [أنا];

}

برينتف ("سلسلة تحويلها إلى مجموعة:");

ل (إنت أنا = 0 ؛ أنا < طول ؛ أنا i) {

برينتف ("٪ج" ، أر[ط]);

}

العودة 0;

}

نتيجة تنفيذ البرنامج:

سلسلة تحويلها إلى مجموعة: ص ص ط م ه ص ق ر س ك ط

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

يتيح لك استخدام الحلقات لتحويل سلسلة إلى مصفوفة تحقيق النتيجة المرجوة والتحكم في عملية التحويل. ومع ذلك ، مع طول سلسلة طويلة ، وهذا يمكن أن يستغرق الكثير من الوقت والذاكرة.

تحويل الأرقام والرموز

عند تحويل سلسلة إلى مصفوفة في ج ، ضع في اعتبارك أن المصفوفة يمكن أن تحتوي على أرقام وأحرف. في هذا القسم ، سننظر في كيفية التعامل مع الأرقام والرموز بشكل صحيح أثناء التحويل.

تحويل الأرقام

لتحويل سلسلة تحتوي على أرقام إلى صفيف في ج ، يمكنك استخدام وظيفة سترتوك ، التي تقسم السلسلة إلى عناصر منفصلة بواسطة فاصل معين. على سبيل المثال ، إذا كانت السلسلة تحتوي على أرقام مفصولة بفواصل ، فيمكنك استخدام الكود التالي:

# تشمل

# تشمل

كثافة العمليات الرئيسية () {

شار شارع [] = "10 ، 20 ، 30 ، 40 ، 50";

رمز شار * ;

الرمز المميز = سترتوك (شارع،"،");

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

عدد الأسطوانات = أتوي (رمز);

// تنفيذ العمليات مع عدد الأسطوانات

الرمز المميز = سترتوك (فارغ،"،");

}

العودة 0;

}

. ثم نقوم بإجراء عمليات بهذا الرقم.

تحويل الأحرف

إذا كانت السلسلة تحتوي على أحرف بدلا من الأرقام ، يمكنك استخدام نهج مماثل مع وظيفة سترتوك. ومع ذلك ، عند معالجة الرموز ، قد تحتاج إلى استخدام وظائف محددة للعمل مع الرموز.

:

#include

#include

int main() {

char str[] = "Hello, World!";

char *token;

token = strtok(str, " ");

while (token != NULL) {

for (int i = 0; token[i] != '\0'; i++) {

if (isalpha(token[i])) {

printf("%c is a letter

", token[i]);

} else {

printf("%c is not a letter

", token[i]);

}

}

token = strtok(NULL, " ");

}

return 0;

}

يتحقق مما إذا كان الحرف حرفا ، وبناء على النتيجة ، يخرج الرسالة المقابلة.

اعتمادا على المهمة المحددة ، قد يتطلب تحويل الأرقام والرموز عمليات ووظائف إضافية. ومع ذلك ، تظل الفكرة الأساسية كما هي — باستخدام الوظائف لتقسيم سلسلة إلى عناصر منفصلة ومعالجة هذه العناصر وفقا لمتطلبات المهمة.

كيفية معالجة سلسلة فارغة

عند العمل مع السلاسل في اللغة ج ، قد تنشأ حالة عندما يكون من الضروري معالجة سلسلة فارغة. السلسلة الفارغة هي سلسلة لا تحتوي على حرف واحد.

عند معالجة سلسلة فارغة ، يجب مراعاة النقاط التالية:

  • التحقق من الفراغ: قبل معالجة سلسلة ، يجدر التحقق مما إذا كانت فارغة. للقيام بذلك ، يمكنك استخدام وظيفة سترلين ، الذي يعود طول السلسلة. إذا كان طول السلسلة 0 ، فهو فارغ.
  • العرض: إذا كان السطر فارغا ، فيجب عليك عرض الرسالة المقابلة أو تنفيذ الإجراءات اللازمة.

مثال على معالجة سلسلة فارغة:

# تشمل

# تشمل

كثافة العمليات الرئيسية () {

شارع شار [100];

برينتف ("أدخل السلسلة:");

يحصل (شارع);

إذا (سترلين (شارع) = = 0) {

برينتف(" لقد أدخلت سلسلة فارغة.");

} آخر {

برينتف(" لقد أدخلت السلسلة: ٪ س " ، شارع);

}

العودة 0;

}

في هذا المثال ، يقرأ البرنامج السلسلة باستخدام وظيفة جيتس ويتحقق من الفراغ باستخدام وظيفة سترلين. إذا كان السطر فارغا ، يتم عرض الرسالة المقابلة ، وإلا يتم عرض السطر الذي تم إدخاله.

وبالتالي ، عند العمل مع السلاسل في اللغة ج ، يجب أن تأخذ في الاعتبار إمكانية وجود سلسلة فارغة وتوفير الإجراءات اللازمة عند معالجتها.

أمثلة الاستخدام

Рассмотрим несколько примеров использования функции sscanf для преобразования строки в массив в языке C: