المصفوفات ARRAYS الجزء الثالث
* سلاسل الحروف * ( مصفوفة العبارة الحرفية array of string )
تستخدم كلمة سلسلة حروف مقابل لكلمة string
* الإعلان عن سلاسل الحروف *
- عندما ترغب فى استخدام مصفوفة حروف فأنك تعلن عنها كما تعلن عن بقية المصفوفات الأخرى
** وللأعلان عن نوع البيانات char نكتب التالى : char name[80]
- هنا نعلن عن المصفوفة name التى تتسع لـ 79 حرف ( لأن لغة c تفترض ان المصفوفة تنتهى بحرف الصفر (null)
** شكل آخر للأعلان char name[ ] = "ali ahmed"
- هنا سوف يقوم المترجم بعــد الحروف وتحديد حجم المصفوفة وتهيئتها بالحروف المذكورة
** استخدام مصفوفة الحروف :-
- بعد أن تنتهى من الإعلان عن مصفوفة الحروف . يمكنك البدء فى استخدامها
- كذلك يمكن ان تمرر اسم المصفوفة الى أحد اجراءات مكتبة التشغيل مثل الاجراء printf أو gets أو غيرها. ويمكنك أيضا الكتابة الى أى حرف داخلها أو قراءة الحرف فيها ووضعها فى متغيرات أخرى
** والبرنامج التالى يوضح استخدام مصفوفات الحروف :-
- الكود:
-
# include<stdio.h?
void main(void)
{
char namr[80]
printf(“place enter your name : “);
gets(name);
printf(“welcome , %s “, name);
}
* ملاحظات :
- فى هذا البرنامج يعلن عن مصفوفة الحروف name ثم نستخدم الاجراء gets ليقرأ اسم المستخدم من لوحة المفاتيح ثم يخزن الحروف التى أدخلها المستخدم فى المصفوفة
- إذا رغبت أن تتعامل مع كل حرف من حروف المصفوفة على حدة اكتب التالى name[0] = 'a'
- إذا اردت ان تنقل القيمة الموجودة فى أحد الحروف فى المصفوفة الى أحــد المتغيرات الأخرى نكتب ss = name[15];
** مصفوفة الحروف تنتهى بالرقم صفر **
يجب ان تلاحظ ان مصفوفة الحروف يجب ان تنتهى بالرقم صفر ( null )
* برنامج *
كود:
- الكود:
-
# include <stdio.h>
void main(void)
{
char strin[ ] = “hello”;
printf(“character array = %s , its length = %d \n, strin , sizeof(string));
}
* ملاحظات :
- فى هذا البرنامج نعلن عن مصفوفة باسم string
- نطلب من المترجم ان يهيئها بان يضع فيها كلمة hello كما يلى char string[ ] = "hello”
- بعد ذلك نستخدم الاجراء printf ليطبع محتويات هذه المصفوفة
- استخدام كلمة sizeof لنحصل على حجم هذه المصفوفة ونطبعه يكون الناتج
character array = hello its length = 6
- لاحظ ان حجم المصفوفة هو 6 حروف فى حين اننا وضعنا فيها 5 فقط وهى الحروف hello
السبب : هو أن مصفوفة الحروف تنتهى دائماص بالرقم صفر الذى يستخدم كدلالة على نهايتها كما فى الشكل :
** لكى نتأكد من هذه النقطة انظر البرنامج التالى :-
كود:
- الكود:
-
# include<stdio.h>
void main(void)
{
int count;
char string[ ] = “ hello “
for(count = 0 ; count < sizeof(string); count ++)
printf(“ string[%d] = =%d %c \n “, count, string[count], string[count]);
}
- فى هذا البرنامج نعلن عن مصفوفة الحروف string ثم نستخدم تكرار for لنطبع محتويات كل حرف فيها
- لاحظ شرط استمرار التكرار. Count < sizeof(string)
- سيؤدى هذا الشرط الى استمرار التكرار بعدد الحروف الموجود فى المصفوفة string وفى كل مرة يعمل فيها التكرار نطبع الحرف الموجود فى المصفوفة كحرف وكرقم فى جدول آسكى كما فى الشكل التالى :-
String[ 0 ] = 104 h String[ 1 ] = 101 e
String[ 2 ] = 108 l String[ 3 ] = 108 l
String[ 4 ] = 111 o String[ 5 ] = 0
لاحظ كيف يعرف البرنامج الحرف السادس فى المصفوفة على أنه = صفراً
** بعض الاجراءات التى تتعامل مع مصفوفات الحروف **
هناك العديد من اجراءات مكتبة التشغيل التى تسهل التعامل مع مصفوفات الحروف
(1) معرف عدد الحروف فى المصفوفة :-
- إذا اردت ان تعرف عدد الحروف الموجودة فى أى مصفوفة حروف استخدم الاجراء strlen يعود بعدد الحروف الفعلية الموجودة فى المصفوفة بدون عد اصفر الموجود فى نهايتها
- مثلا len = strlen("count this string " )
(2) نسخ مصفوفة حروف الى اخرى :-
- لا تسمح لك لغة الــc بنقل محتويات مصفوفة حروف الى اخرى مباشرة .
- هناك الاجراء strcpy يستخدم كما يلى : strcpy ( string1 , string2 ) سيقوم الاجراء بنسخ محتويات المصفوفة string2 الى المصفوفة string1
- ويمكن ان نستخدم الاجراء strcpy لنسخ مجموعة احرف الى مصفوفة اخرى .
- مثلاً strcpy( string , " hello my string "); هنا سيقوم المترجم بوضع الجملة المذكورة فى المصفوفة string
- كذلك يجب أن نتأكد أن المصفوفة التى ستنقل إليها الحروف تتسع لكل الحروف الموجودة فى المصفوفة الأخرى لأن الاجراء strcpy لا يتأكد من ذلك.
(3) دمج محتويات مصفوفتى حروف :-
- لعمل ذلك استخدم الاجراء strcat كما يلى: (strcat(string1 , string2 سيضيف الاجراء srcat محتويات المصفوفة string2 الى محتويات المصفوفة string1
- هنا يجب أن نتأكد أن المصفوفة string1 تتسع لكل الحروف الموجودة فى المصفوفة string2 بالإضافة الى الحروف التى كانت أصلا موجودة
كود:
- الكود:
-
# include < stdio.h>
void main(void)
{
char string1[20] = “learning c “;
char string2[ ] = “ is easy “;
strcat(string1 , string2 );
printf(string1);
}
الناتج : learning c is easy