بعضی از توابع رشته ای
بعضی از توابع بر روی رشته ها عمل کرده و دستکاری رشته ها را آسان می کنند .
که می توان از مقایسه رشته ها ، تعیین طول رشته ها، الحاق کردن رشته ها به یکدیگر
و … نام برد .
تابع ()strcpy
تابع ()strcpy برای قرار دادن رشته ای در رشته دیگر مورد استفاده قرار گرفته
و بصورت زیر استفاده می شود : ;
(“رشته ” و متغیر رشته ای )strcpy
اهمیت این تابع وقتی مشخص می شود که بدانیم ، مقدار دادن به متغیر رشته ای
بطور مستقیم امکان پذیر نیست بلکه فقط از طریق این تابع صورت پذیرد . مثلا” اگر
داشته باشیم : char name[11];
دستور انتساب زیر غلط خواهد بود : name=”ALI”;
با استفاده از تابع ()strcpy عمل فوق را می توان بصورت زیر انجام داد : strcpy(name/”ALI”);
این مساله بدین علت است : ” همانطور که در C نمی توان دو آرایه را با حکم
انتساب (=) به یکدیگر نسبت داد ، دو رشته نیز نمی توانند با حکم انتساب ، به
یکدیگر نسبت داده شوند .
مثال ۱: برنامه ای که یک رشته و یک عدد( که بیانگر موقعیتی ازاین رشته است )
را از ورودی خوانده و موجب حذف کاراکتر موجود در آن محل می شود . 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 );
}
نمونه ای از خروجی برنامه مثال ۱: type a string: in thee name of allah.
enter position for delete character:5
the result string is:
in the name of allah.
در مثال ۱ متغیر position به موقعیتی از رشته اشاره میکند که کاراکتر موجود
در آن باید حذف شود . با استفاده از تابع ()strcpy قسمتی از رشته string را با
شروع از position + 1 ، در همین رشته با شروع از موقعیت position کپی کرده ایم .
این عمل موجب حذف کاراکتری که در موقعیت position قرار داشته است می گردد . با
فرض این که رشته ورودی برابر با “cart” و موقعیت کاراکتری که باید حذف شود ۲
فرض گردد خروجی حاصل از اجرای برنامه مثال ۱ بصورت زیر خواهد بود : type a string: cart.
enter position for delete character:2
the result string is:cat
تابع ()strcat
این تابع برای الحاق کردن ( به دنبال هم قرار دادن ) دو رشته استفاده میشود
و بصورت زیر به کار می رود : strcat(s1/s2)
s1
و s2و دو رشته ای هستند که باید با هم الحاق شوند . s2 در انتهای رشته s1
قرار خواهد گرفت .
مثال ۲: 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
رشته ای است که طول آن باید تعیین شود .
مثال ۳: main)(
{
char name[31] ;
puts(” enter a string: ” );
gets(name );
printf(“\n string length is:”);
printf(“%d”/strlen(name ));
}
نمونه ای از خروجی برنامه مثال ۳ : enter a string:
the c language is very quick.
string length is:29
روش دیگر برای پیدا کردن طول یک رشته ، استفاده از تابع ()scanf با پارامتر
کنترلی %n است . با استفاده از تابع ()scanf و پارامتر %n ، مثال ۳ را می توان
بصورت زیر نوشت : 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 ، پیام مناسبی صادر می شود .
مثال ۴: 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 is in . ” );
else
printf(“\n is not in .”);
if(strstr(s1/ch))
printf(“\ncharacter<%c>is in.”);
else
{
printf(“\ncharacter<%c>is”);
printf(” not in .”);
}
}
نمونه ای از خروجی برنامه مثال ۴ : enter string :
this is a sample statement.
enter string :
sample
enter character for search in : m
length of is:28
length of is:6
is in .
character is
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن