دسته بندی : / لینک ثابت
كه مي توان از مقايسه رشته ها ، تعيين طول رشته ها، الحاق كردن رشته ها به يكديگر
و ... نام برد .
تابع ()strcpy
تابع ()strcpy براي قرار دادن رشته اي در رشته ديگر مورد استفاده قرار گرفته
و بصورت زير استفاده مي شود : ;
("رشته " و متغير رشته اي )strcpy
اهميت اين تابع وقتي مشخص مي شود كه بدانيم ، مقدار دادن به متغير رشته اي
بطور مستقيم امكان پذير نيست بلكه فقط از طريق اين تابع صورت پذيرد . مثلا" اگر
داشته باشيم : char name[11];
دستور انتساب زير غلط خواهد بود : name="ALI";
با استفاده از تابع ()strcpy عمل فوق را مي توان بصورت زير انجام داد : strcpy(name/"ALI");
اين مساله بدين علت است : " همانطور كه در C نمي توان دو آرايه را با حكم
انتساب (=) به يكديگر نسبت داد ، دو رشته نيز نمي توانند با حكم انتساب ، به
يكديگر نسبت داده شوند .
مثال 1: برنامه اي كه يك رشته و يك عدد( كه بيانگر موقعيتي ازاين رشته است )
را از ورودي خوانده و موجب حذف كاراكتر موجود در آن محل مي شود . main)(
{
char string[81] ;
int position ;
printf("\n type a string: " );
gets(string );
printf("\n enter position for " );
printf("delete character: " );
scanf("%d"/&position );
strcpy(&string[position]/
&string[position+1] );
puts(" the result string is :" );
puts(string );
}
نمونه اي از خروجي برنامه مثال 1: type a string: in thee name of allah.
enter position for delete character:5
the result string is:
in the name of allah.
در مثال 1 متغير position به موقعيتي از رشته اشاره ميكند كه كاراكتر موجود
در آن بايد حذف شود . با استفاده از تابع ()strcpy قسمتي از رشته string را با
شروع از position + 1 ، در همين رشته با شروع از موقعيت position كپي كرده ايم .
اين عمل موجب حذف كاراكتري كه در موقعيت position قرار داشته است مي گردد . با
فرض اين كه رشته ورودي برابر با "cart" و موقعيت كاراكتري كه بايد حذف شود 2
فرض گردد خروجي حاصل از اجراي برنامه مثال 1 بصورت زير خواهد بود : type a string: cart.
enter position for delete character:2
the result string is:cat
تابع ()strcat
اين تابع براي الحاق كردن ( به دنبال هم قرار دادن ) دو رشته استفاده ميشود
و بصورت زير به كار مي رود : strcat(s1/s2)
s1
و s2و دو رشته اي هستند كه بايد با هم الحاق شوند . s2 در انتهاي رشته s1
قرار خواهد گرفت .
مثال 2: main)(
{
char s1[21] / s2[21] ;
puts("enter string
gets(s1 );
puts("enter string
gets(s2 );
strcat(s1/s2 );
puts("result string is: " );
puts(s1 );
}
درپاسخ به درخواست برنامه ، اگر بجاي s1 عبارت good وبجاي s2 عبارت moorning
را وارد كنيم ، خروجي بدين صورت است : enter string
good
enter string
moorning.
result string is:
goodmoorning.
براي تمرين ميتوانيد برنامه را طوري تغيير دهيد كه بين دو عبارت ، يك فاصله
(blank) باشد .
تابع ()strlen
تابع ()strlen براي تعيين طول يك رشته مورد استفاده قرار گرفته و بصورت زير
به كار مي رود : strlen(s)
s
رشته اي است كه طول آن بايد تعيين شود .
مثال 3: main)(
{
char name[31] ;
puts(" enter a string: " );
gets(name );
printf("\n string length is:");
printf("%d"/strlen(name ));
}
نمونه اي از خروجي برنامه مثال 3 : enter a string:
the c language is very quick.
string length is:29
روش ديگر براي پيدا كردن طول يك رشته ، استفاده از تابع ()scanf با پارامتر
كنترلي %n است . با استفاده از تابع ()scanf و پارامتر %n ، مثال 3 را مي توان
بصورت زير نوشت : main)(
{
char name[31] ;
int count ;
scanf("%s%n"/name/&count);
printf("\n string length is:");
printf("%d"/count );
}
تابع ()strcmp
تابع ()strcmp براي مقايسه كاراكتري دو رشته مورد استفاده قرار ميگيرد و به
اين صورت بكار مي رود : strcmp(s1/s2)
s2
و s1و دو رشته اي هستند كه بايد با يكديگر مقايسه شوند . اين تابع نتيجه
مقايسه دو رشته را بصورت صفر ، منفي و يا مثبت مشخص مي كند :
نتيجه |(s1/s2()strcmp
ؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤؤ s1=s2 | 0
منفي | s2 <َs1
مثبت | s2 >َs1
تابع ()strchr
تابع ()strchr براي جستجوي يك كاراكتر در يك رشته بكار مي رود و محل وجود
اولين وقوع آن را مشخص مي كند. اگر كاراكتر مورد نظر در رشته وجود نداشته باشد
مقداري كه توسط اين تابع برگردانده مي شود برابر با صفر است . اين تابع بصورت
زير استفاده مي شود : strchr(s/ ch)
ch
كاراكتري است كه بايد در رشته s جستجو شود. بعنوان مثال ، بااجراي دستور: if( strchr( "hello"/'e'))printf( "e is in hello");
چون حرف e در عبارت hello وجود دارد پيام مناسبي چاپ مي شود .
تابع ()strstr
تابع ()strstr براي جستجو زير رشته اي در يك رشته مورد استفاده قرار گرفته و
بصورت زير بكار مي رود : strstr(s1/s2)
s2
رشته اي است كه بايد در رشته s1 جستجو شود . اگر s2در s1ر پيدا شود محل
اولين وقوع آن توسط تابع برگردانده مي شود ولي اگر s2در s1ر وجود نداشته باشد
مقدار صفر برگردانده خواهد شد . بعنوان مثال ، با اجراي دستور : if( strstr( "this is"/"hi"))printf( "hi found");
بعلت وجود رشته hi در رشته this is ، پيام مناسبي صادر مي شود .
مثال 4: main)(
{
char s1[80] / s2[80] ;
char ch ;
puts(" enter string
gets(s1 );
puts(" enter string
gets(s2 );
puts("enter character for search");
printf(" in s1: " );
ch=getche )(;
printf("\n length of s1 is:");
printf("%d"/strlen(s1 ));
printf("\n length of s2 is:");
printf("%d" /strlen(s2 ));
if(!strcmp(s1/s2))
printf("\n string are equal. ");
if(strstr(s1/s2))
printf("\n
else
printf("\n
if(strstr(s1/ch))
printf("\ncharacter<%c>is in
else
{
printf("\ncharacter<%c>is");
printf(" not in
}
}
نمونه اي از خروجي برنامه مثال 4 : enter string
this is a sample statement.
enter string
sample
enter character for search in
length of
length of
character


