.:رسمه مبدع:.
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي
.:رسمه مبدع:.
عزيزي الزائر / عزيزتي الزائرة يرجي التكرم بتسجبل الدخول اذا كنت عضو معنا
او التسجيل ان لم تكن عضو وترغب في الانضمام الي اسرة المنتدي
سنتشرف بتسجيلك
شكرا
ادارة المنتدي
.:رسمه مبدع:.
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


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

 

 تابع دوره فى لغه السى 11

اذهب الى الأسفل 
كاتب الموضوعرسالة
PrAmJnEt
مدير عام
مدير عام
PrAmJnEt


ذكر عدد المساهمات : 396
نقاط : 146692
العمر : 65

تابع دوره فى لغه السى 11 Empty
مُساهمةموضوع: تابع دوره فى لغه السى 11   تابع دوره فى لغه السى 11 Emptyالإثنين مايو 11, 2009 1:47 pm

بسم الله الرحمن الرحيم
دوال التعامل مع الحروف و السلاسل الحرفية






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


أما هنا فسنتطرق إلى دوال مهمة للمبرمج نفسة و لطبيعة برنامجة العملية .
منها:


أولاً: الدوال التي تهتم بالحروف و هي تندرج تحت ملف الامتداد ctype.h .

_________________________________________________________________________________________________________________________________


1. الدالة


int isalnum ( char ch );


و هذه الدالة تتأكد من إذا كان الحرف المدخل من الأعداد 0 – 9 أو من الحروف A-Z أو a-z , فإذا كان المدخل رقم او حرف

فإن الدالة تعيد القيمة غير الصفر ( غالباُ واحد ) و إذا لم يكن حرف و لا رقم فإن الدالة تعيد القيمة صفر . ولنفسر اسم هذه الدالة بالغلة الإنكليزية يكون:

Is Alphabetic or is Number ?

لنرى كيف نستخدمها :


char ch = 'y' ; // or any number from 0 - 9
if ( isalnum (ch) != 0 )
printf("%c is alphanumeric. n");


و من هنا يتضح كيف نستخدمها .

_________________________________________________________________________________________________________________________________

2. الدالة :


int isalpha ( char ch);


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



_________________________________________________________________________________________________________________________________

3. الدالة:


وصفهاالدالة
Function Key تسأل إذا كان int iscntrl ( char ) ;
تسأل إذا كان رقم int isdigit ( char ) ;
Space تتأكد إذا كان الحرف قابل للطباعة ولكن من غير الــ int isgraph( char ) ;
تسأل إذا كان نوع الحرف صغير int islower( char ) ;
تسأل إذا كان الحرف قابل للطباعة و يتضمن من ذلك المسافةint isprint ( char ) ;
يسأل إذا كان الحرف المدخل مسافة int isspace( char ) ;
يسأل إذا كان نوع الحرف كبير int isupper ( char ) ;
hex يسأل إذا كان الحرف من نوعint isxdigit ( char ) ;




طبعاً أنا ذكرت جميع الدوال على هذه الصيغة:


int theFunction ( char ) ;


في الحقيقة هذه الدوال لا تأخذ قيمة من نوع char بل تأخذها من نوع int أي الآسكي كود تبع الحرف .

ولكن إذا أرسلت لأحد الدوال متغير من نوع int سيقبل و لكن على أساس أنه كود آسكي . و قد وضعت انا المتغيرات من نوع char وذلك لتسهيل فهم الدوال .
ولكن ألا تلاحظ أن جميع هذه الدوال تبدأ بالكلمة is ؟
والكلمة is تدل في الاجليزية على صيغة سؤال و السؤال جوابة يكون إما رفض و هو القيمة صفر ( 0 ) و إما قبول و هي غير تلك القيمة.

وهذ مثال يحسب عدد الحروف و الأرقام في جملة معينة :


#include "stdio.h"
#include "ctype.h"
void main()
{
char str[10] ;
int d_count ; // digit counter
int c_count ; // char counter
int i; // for the loop

d_count = c_count = i = 0 ;

printf(" Please Enter a string: ");
gets(str);

while ( str[i] != '' )
{
if( isalpha(str[i]) != 0 )
c_count++ ;
else if ( isdigit (str[i]) != 0 )
d_count++ ;
i++ ;
}

printf("There is %d digits and %d chat... ",d_count, c_count);
return 0 ;
}


لاحظوا أن هذه الدوال تأخذ حرف واحد و ليست جملة.


ويوجد هناك ايضاً داتين هما :


char toupper ( char ch) ;
char tolower ( char ch) ;


و تستخدمان هكذا :


char ch = 'Y' ;
char cc ;
cc = tolower ( ch ) ;


و هكذا تستخدم الدالة toupper و اسم هاتين الدالتين تدلان على معناهما.
ولكن هاتين الدالتين للحروف فقط ... ولكن ماذا لو أردنا للكلمات أي للجمل ؟
الحل لن يخرج عن حلين :
الاول : إستخدام while loop و الأخر دالة سنتطرق لها بعد قليل .



_________________________________________________________________________________________________________________________________

يهذا نكون انهينا تقريباً دوال التعامل مع الحروفو الآن ننتقل إلى دوال التعامل مع الجمل وهي تندرج تحت الملف string.h وهذه هي :

1. الدالة


int strlen ( chat *s) ;


فلو كانت عندنا مصفوفة حرفية كالتالي:


int length ;
char str[20] = "Hi I am Talal" ;


ثم إستدعينا الدالة كالتالي:


Length = strlen (str) ;


ماذا سوف تكون النتيجة ؟
هل ستقول 20 الجواب قطعاً لا ...20 هو حجم المصفوفة و لكن طول الجملة هو 13.


و سترى فائدتها في مثال شامل لكل هذه المفاهيم بعد قليل إن شاء الله .



_________________________________________________________________________________________________________________________________

2. الدالة :


char *strcat ( char *des, const char *str ) ;


وظيفتها هي إلحاق الجملة الثانية في نهاية الجملة الألى و تعيد الدالة مؤشر إلى الدالة المضاف إليها.

ولكن ليس من الضروري ان تجعل هناك مؤشر للجملة المعدلة و لكن الجملة des ستعدل أوتوماتيكياً.



_________________________________________________________________________________________________________________________________

4. الدالة :


char *strncat ( char *des, const char *str, int n) ;


وهي نفس الدالة السابقة ولكن تضيف أول n حرف من str إلى الـ des حيث أن الـn هي قيمة من نوع int أي قيمة صحيحة .



_________________________________________________________________________________________________________________________________

5. الدالة:


int strcmp( const char *string1, const char *string2 );


و الجدول أدناه يبين كيفية تحديد قيم المقارنه:

< 0string1 less than string2
0string1 Equal to string2
> 0string1 greater than string2





ومثلها الدالة strncmp و لكنها تأخذ متغير ثالث وهو عدد الحروف المراد مقارنتها .
فمثلاً لو كان لدينا برنامج به مجموعة أسماء و اردنا أن نعرف كم واحد يبدأ إسمة بـــ"عبد" مثل عبدالله و عندالرحمن و .... إلخ
الاحرف المشتركة بين هذه الاسماء هي عبد فقط و لذلك نستخدم الدالة strncmp و نعطي المتغير الثالث قيمة 3 هكذا :


int a ;
char *str1 = "abdullah", *str2 = "abdurahman" ;
a = strncmp(str1, str2, 3) ;


هنا ستعيد الدالة صفر للمتغير a.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://rsma-m.yoo7.com
 
تابع دوره فى لغه السى 11
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» تابع دوره فى لغه السى 12
» تابع دوره فى لغه السى 13
» تابع دوره فى لغه السى 15
» تابع دوره فى لغه السى 16
» تابع دوره فى لغه السى

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
.:رسمه مبدع:. :: ¨°o.O (لغات البرمجه) O.o°¨ :: .:لغه السى والسى++ والسى#:.-
انتقل الى: