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

كيفية تحويل سلسلة إلى مصفوفة باستخدام لغة سي

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

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

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

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

  1. تحويل سلسلة إلى صفيف في ج
  2. الطريقة 1: استخدام وظيفة سترتوك()
  3. باستخدام وظيفة سترتوك () لتقسيم سلسلة إلى عناصر صفيف
  4. الطريقة 2: استخدام وظيفة سسكانف()
  5. باستخدام وظيفة سسكانف () لمسح وتحويل سلسلة إلى صفيف
  6. الطريقة 3: استخدام وظيفة سترسيب()
  7. باستخدام وظيفة سترسيب () لتقسيم سلسلة إلى عناصر صفيف
  8. الطريقة 4: استخدام وظيفة سسكنف()
  9. باستخدام وظيفة سسكانوف () مع التنسيق لتحويل سلسلة إلى صفيف
  10. سؤال وجواب

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

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

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

يوجد أدناه نموذج رمز يوضح هذا النهج:

# تشمل

# تشمل

# تحديد الطول الأقصى 100

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

شارع شار [أقصى طول];

شار آر [أقصى طول];

الباحث الأول ، الطول;

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

فجيتس (ستر ، ماكس طول ، ستدين);

طول = سترلين (شارع) - 1 ؛ / / عدد الأحرف في سلسلة

// تحويل سلسلة إلى مجموعة من الأحرف

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

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

}

أر [أنا] = '\ 0' ؛ / / إضافة حرف فارغ إلى نهاية المصفوفة

برينتف ("سلسلة محولة إلى صفيف: ٪ س

"،آر);

العودة 0;

}

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

نتيجة لتنفيذ هذا المثال ، سيتم تحويل السلسلة إلى مجموعة من الأحرف وعرضها على الشاشة.

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

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

الطريقة 1: استخدام وظيفة سترتوك()

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

تحويل سلسلة إلى صفيف باستخدام وظيفة سترتوك () يتضمن الخطوات التالية:

  1. أعلن مجموعة من الأحرف لاستخدامها لتخزين سلاسل فرعية.
  2. أعلن مؤشر إلى سلسلة وتهيئة ذلك مع السلسلة الأصلية.
  3. إعلان مؤشر إلى حرف وتهيئة ذلك مع فاصل التي سيتم استخدامها لفصل السلسلة.
  4. استخدام وظيفة سترتوك () لتقسيم سلسلة إلى سلاسل فرعية وتخزينها في صفيف.
  5. كرر الخطوة 4 حتى ترجع وظيفة سترتوك() فارغة ، مما يعني أنه تم استلام جميع السلاسل الفرعية.

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

# تشمل 

# تشمل

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

char str[] = "Привет, мир! Язык программирования C.";

char delimiters[] = " ,.!"; // Разделители: пробел, запятая, точка, восклицательный знак

char *token;

// Получение первой подстроки

token = strtok(str, delimiters);

// Печать подстрок и их индексов

while (token != NULL) {

printf("Подстрока: %s

", token);

printf("Индекс: %d

", token - str);

token = strtok(NULL, delimiters);

}

return 0;

}

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

سلسلة فرعية: مرحبا

الفهرس: 0

سلسلة فرعية: العالم

فهرس: 8

سلسلة فرعية: اللغة

فهرس: 14

السلسلة الفرعية: البرمجة

الفهرس: 20

سلسلة فرعية: ج

فهرس: 38

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

باستخدام وظيفة سترتوك () لتقسيم سلسلة إلى عناصر صفيف

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

وظيفة سترتوك () لديها بناء الجملة التالي:

# تشمل 

شار * سترتوك (شار *ستر ، كونست شار * ديليم);

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

بعد المكالمة الأولى إلى وظيفة سترتوك () ، ينبغي أن يسمى مع المعلمة فارغة لمواصلة تقسيم الجزء المتبقي من السلسلة.

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

# تشمل 

# تشمل

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

شار شارع [] = "أليس ، بوب ، تشارلي";

شار * ديليم ="،";

رمز شار * ;

/ * تقسيم سلسلة إلى عناصر صفيف */

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

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

برينتف ("٪ق

"،رمز);

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

}

العودة 0;

}

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

أليس

بوب

تشارلي

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

وبالتالي ، فإن وظيفة سترتوك () يجعل من السهل تقسيم سلسلة إلى عناصر صفيف ومعالجتها بشكل منفصل.

الطريقة 2: استخدام وظيفة سسكانف()

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

Для использования функции sscanf() необходимо подключить заголовочный файл stdio.h.

Пример кода:

#include 

#include

#include

int main() {

char str[100] = "1 2 3 4 5";

int arr[5];

int num;

int i = 0;

while (sscanf(str, "%d", #) == 1) {

arr[i] = num;

i++;

str = strchr(str, ' ') + 1;

}

for (int j = 0; j < 5; j++) {

printf("%d ", arr[j]);

}

printf("

");

return 0;

}

В этом примере мы создаем строку str, содержащую числа, разделенные пробелами. ثم نعلن الصفيف آر و المتغير الأسطوانات لتخزين الأرقام من السلسلة. يتم استخدام المتغير الأول لتتبع مؤشر المصفوفة.

بعد ذلك ، نستخدم حلقة بينما لقراءة الأرقام من سلسلة ستر ، في حين أن وظيفة سسكانوف() يقرأ بنجاح الرقم. وظيفة سسكانوف() يأخذ معلمتين: السلسلة المراد قراءتها والتنسيق الذي من المتوقع أن الرقم. في حالتنا ، يعني التنسيق "٪ د " أننا نتوقع عددا صحيحا.

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

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

في الإخراج نحصل على النتيجة التالية:

1 2 3 4 5

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

باستخدام وظيفة سسكانف () لمسح وتحويل سلسلة إلى صفيف

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

هو كما يلي:

الباحث سكانف(كونست شار * شارع, كونست شار * شكل,...);

المعلمات:

  • شارع: المؤشر إلى الخط المراد مسحه ضوئيا
  • الشكل: مؤشر إلى سلسلة قالب يحدد التنسيق المطلوب للبيانات المراد استخراجها من السلسلة
  • ...: المتغيرات التي سيتم تخزين القيم المستخرجة من السلسلة

لتحويل سلسلة إلى مصفوفة:

# تشمل 

# تحديد الحد الأقصى للحجم 100

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

شارع شار[] = "1 2 3 4 5";

إنت أر[ماكس-سيزي];

الباحث الأول ، العد;

العد = سسكنف(ستر ، "٪ د ٪ د ٪ د ٪ د ٪ د " ، & أر[0] ، & أر[1] ، & أر[2] ، & أر[3] ، & أر[4]);

برينتف ("القيم المستخرجة:

");

إلى عن على (أنا = 0 ؛ أنا < العد ؛ أنا i) {

برينتف ("٪د

"،آر [أنا]);

}

العودة 0;

}

. ثم ، يتم عرض القيم المستخرجة على الشاشة.

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

القيم المستخرجة:

1

2

3

4

5

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

الطريقة 3: استخدام سترسيب()

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

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

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

# تشمل

# تشمل

# تشمل

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

شار [] = "التفاح والموز والعنب";

رمز شار * ;

شار * صفيف [3];

الباحث الأول = 0;

الرمز المميز = سترسب (&شارع,",");

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

صفيف [أنا i] = ستردوب (رمز);

الرمز المميز = سترسب (&شارع,",");

}

إلى عن على (أنا = 0 ؛ أنا < 3 ؛ أنا i) {

برينتف ("٪ق

"،صفيف [أنا]);

}

العودة 0;

}

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

باستخدام وظيفة سترسب(&ستر،"،") ، قمنا بتقسيم السلسلة إلى رموز منفصلة باستخدام الفاصل"،". ثم يتم تخزين كل رمز مميز في المصفوفة باستخدام وظيفة ستردوب () لإنشاء نسخة من الرمز المميز.

ثم نقوم فقط بإخراج كل عنصر من عناصر المصفوفة باستخدام حلقة.

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

باستخدام وظيفة سترسيب () لتقسيم سلسلة إلى عناصر صفيف

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

قبل استخدام وظيفة سترسيب () ، تحتاج إلى تضمين ملف الرأس الذي يحتوي على النموذج الأولي للوظيفة:

# تشمل

وجود سلسلة تريد تقسيمها ، يمكنك استخدام وظيفة سترسيب () على النحو التالي:

شار * سترسيب(شار * * سترينغب ، كونست شار * ديليم);

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

تقوم الدالة سترسيب() بإرجاع مؤشر إلى السلسلة الفرعية التالية المستلمة بعد تقسيم السلسلة. Когда все подстроки будут извлечены, функция strsep() вернет нулевой указатель.

Пример использования функции strsep() для разделения строки на элементы массива:

#include

#include

int main() {

char str[] = "разделение строки на элементы массива";

char *delim = " ";

char *token;

char **arr = malloc(sizeof(char *) * strlen(str));

int i = 0;

token = strsep(&str, delim);

while (token != NULL) {

arr[i] = token;

token = strsep(&str, delim);

i++;

}

// طباعة عناصر المصفوفة

إلى عن على (الباحث ي = 0 ؛ ي < أنا ؛ ي++) {

برينتف ("٪ق

"،آر [ي]);

}

العودة 0;

}

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

عند تشغيل هذا البرنامج ، سترى الإخراج التالي:

تقسيم

سلسلة

في

عناصر المصفوفة

الآن أنت تعرف كيفية استخدام وظيفة سترسيب () لتقسيم سلسلة إلى عناصر صفيف في لغة البرمجة ج. هذه طريقة مفيدة لمعالجة السلاسل والعمل مع السلاسل الفرعية في ج.

الطريقة 4: استخدام وظيفة سسكنف()

وظيفة سسكانوف () هي جزء من مكتبة ستديو.ح ويسمح لك بإجراء تحويل مماثل لسلسلة إلى مصفوفة ، كما تفعل وظيفة المسح الضوئي() مع إدخال لوحة المفاتيح.

بناء الجملة من وظيفة سسكانوف () يبدو مثل هذا:

إنت سكانف (كونست شار * ستر ، كونست شار * شكل،...)

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

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

# تشمل

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

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

كثافة العمليات [5];

سكنف (ستر ، "٪ د ٪ د ٪ د ٪ د ٪ د " ،و أر[0] ،و أر[1] ،و أر[2] ، و أر[3] ، و أر[4]);

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

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

}

العودة 0;

}

في هذا المثال ، يتم تخزين السلسلة الأصلية "10 20 30 40 50" في صفيف ستر. ثم ، باستخدام وظيفة سسكانوف () ، يتم تحويل القيم من السلسلة إلى أرقام وتخزينها في صفيف أر. في الحلقة ، يتم عرض قيم مجموعة أر على الشاشة.

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

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

باستخدام وظيفة سسكانوف () مع التنسيق لتحويل سلسلة إلى صفيف

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

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

لاستخدام وظيفة سسكانوف () ، تحتاج إلى توصيل ملف الرأس. بناء الجملة من وظيفة سسكانوف () كما يلي:

الباحث سكانف(كونست شار * شارع, كونست شار * شكل,...);

حيث ستر هو مؤشر إلى سلسلة ليتم تحويلها ، شكل هو سلسلة التنسيق الذي يحدد القيم التي لاستخراج ، و ... هي قائمة من المتغيرات التي سيتم كتابة القيم المستخرجة.

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

# تشمل 

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

شارع شار[] = "1 2 3 4 5";

صفيف كثافة العمليات [5];

سكانف (ستر ، "٪ د ٪ د ٪ د ٪ د د " ، و صفيف [0] ، و صفيف [1] ، و صفيف [2] ، و صفيف [3] ، و صفيف [4]);

برينتف ("صفيف:");

إلى عن على (كثافة العمليات أنا = 0; أنا < 5; أنا i) {

برينتف ("٪د " ، صفيف [أنا]);

}

العودة 0;

}

في هذا المثال ، يتم تحويل السلسلة "1 2 3 4 5" إلى مصفوفة من الأعداد الصحيحة. وظيفة سسكانوف () مع الوسيطة "٪ د ٪ د ٪ د ٪ د د ٪د " مقتطفات خمسة أعداد صحيحة من سلسلة ويكتبها إلى عناصر الصفيف المقابلة. ثم يتم عرض المصفوفة على الشاشة.

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

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

سؤال وجواب