خانه / دوره آموزش مقدماتی C و ++C / قسمت بیست و دوم آموزش C – بعضی از توابع رشته ای

قسمت بیست و دوم آموزش C – بعضی از توابع رشته ای

بعضی از توابع بر روی رشته ها عمل کرده و دستکاری رشته ها را آسان می کنند . که می توان از مقایسه رشته ها ، تعیین طول رشته ها ، الحاق کردن رشته ها به یکدیگر و … نام برد .

تابع ()strcpy تابع ()strcpy برای قرار دادن رشته ای در رشته دیگر مورد استفاده قرار گرفته و بصورت زیر استفاده می شود :

;("رشته " و متغیر رشته ای )strcpy

اهمیت این تابع وقتی مشخص می شود که بدانیم ، مقدار دادن به متغیر رشته ای بطور مستقیم امکان پذیر نیست بلکه فقط از طریق این تابع صورت پذیرد . مثلا اگر داشته باشیم :

char name[11];

دستور انتساب زیر غلط خواهد بود :

name=”ALI”;

با استفاده از تابع ()strcpy عمل فوق را می توان بصورت زیر انجام داد :

strcpy(name,”ALI”);
این مساله بدین علت است : همانطور که در C نمی توان دو آرایه را با حکم انتساب (=) به یکدیگر نسبت داد ، دو رشته نیز نمی توانند با حکم انتساب ، به یکدیگر نسبت داده شوند .

مثال ۱ : برنامه ای که یک رشته و یک عدد ( که بیانگر موقعیتی ازاین رشته است ) را از ورودی خوانده و موجب حذف کاراکتر موجود در آن محل می شود .

#include <stdio.h>
#include <conio.h>
#include <string.h>
void 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);
getch();
}

نمونه ای از خروجی برنامه مثال ۱ :

.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 قرار داشته است می گردد .

تابع ()strcat این تابع برای الحاق کردن ( به دنبال هم قرار دادن ) دو رشته استفاده میشود و بصورت زیر به کار می رود :

strcat(s1,s2)

s1 و s2و دو رشته ای هستند که باید با هم الحاق شوند . s2 در انتهای رشته s1 قرار خواهد گرفت .

مثال ۲ :

#include <stdio.h>
#include <conio.h>
#include <string.h>
void 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);
getch();
}

درپاسخ به درخواست برنامه ، اگر بجای s1 عبارت good و بجای s2 عبارت moorning را وارد کنیم ، خروجی بدین صورت است :

: enter string
good

: enter string
.moorning

: result string is
.goodmoorning

برای تمرین میتوانید برنامه را طوری تغییر دهید که بین دو عبارت ، یک فاصله (blank) باشد .

تابع ()strlen تابع ()strlen برای تعیین طول یک رشته مورد استفاده قرار گرفته و بصورت زیر به کار می رود :

strlen(s)

s رشته ای است که طول آن باید تعیین شود .

مثال ۳ :

#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char name[31];
puts("enter a string:");
gets(name);
printf("\n string length is:");
printf("%d",strlen(name));
getch();
}

نمونه ای از خروجی برنامه مثال ۳ :

: enter a string
micropedia

string length is : 10

تابع ()strcmp تابع ()strcmp برای مقایسه کاراکتری دو رشته مورد استفاده قرار میگیرد و به این صورت بکار می رود :

strcmp(s1,s2)

s2 و s1 دو رشته ای هستند که باید با یکدیگر مقایسه شوند . این تابع نتیجه مقایسه دو رشته را بصورت صفر ، منفی و یا مثبت مشخص می کند :
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 ، پیام مناسبی صادر می شود .

ببخشید اگه این جلسه کمی طولانی شد ! با مــا همـراه باشید .

نقد و بررسی

User Rating: ۴٫۷۳ ( ۱۲ votes)

درباره ی آریـان پــور

سلام . آریــان پور هستم . از نویسندگان میکروپـدیا .. علاقه مــند به برنامه نویسی و طراحی وب و شبکه ! دیدگاه ها و نظرات شما دوستان بررسی میشه و باعث دلگرمـی برای نوشتن مطالب بهتر و به روزتر . در تماس باشید با : aryanpour [at] micropedia [dot] ir با مـا همراه باشید ..

همچنین ببینید

قسمت بیست و چهارم آموزش C – عملگرهای اشاره گر

این جلسه بسیار ساده و کوتاه خواهد بود. دو عملگر در مورد اشاره گرها مورد …

۳ دیدگاه ها

  1. سلام خسته نباشید ممنون میشم اگه این برنامه رو برام حل کنید.
    برنامه ای بنویسید که با استفاده از توابع مختلف این اعمال را انجام دهند. ۱) ۲رشته را با حداکثر۸۰ کارکتر بخواند ودر آرایه های str1 و str2 قرار دهد. ۲)این ۲ رشته را در خروجی بنویسید. ۳)تابعی بنویسید که ۲رشته ی str1 و str2 راگرفته و مشخص نماید که آیا رشته str2 در رشته str1 وجود دارد یا نه اگر وجود دارد چند بار تکرار شدهو اگر وجود ندارد آن را به str1 اضافه کند.

  2. اقا یک سلام و خسته نباشید میگم انصافا دست شما درد نکات بسیار مفید و جامع خداوند عمرتان دهد
    بی زحمت اگر یک مثال کوچک هم بگذارید دیگر سنگ تمام گذاشتید و شرمنده تان میشویم

  3. عالی بود خیلی خوب بود مرسی

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پاسخ عبارت زیر را وارد کنید: *