| نوشتار شماره: 16 / بازدید / نویسنده: خشایار صباغزاده | پیوند پایدار - |
رشته ها در برنامه نویسی c
رشته ها یکی ازمهمترین انواع داده ها در زبان های برنامه سازی هستند. یک رشته به یک توالی از صفر یا چند کاراکتر گفته می شود. به عنوان مثال ail یک رشته کاراکتری است .از رشته ها در مواردی بسیاری همچون ذخیره اسم وادرس استفاده می شود.
در زبان c نوع داده مشخصی برای رشته وجود ندارد بلکه یک رشته به صورت ارایه ای از کاراکترها تعریف می گردد. به عنوان مثال:
Char name [10];
در مثال فوق متغییر name به عنوان یک ارایه 10 عضوی ازکاراکترها تعریف شده است بنابراین می توانید یک رشته با حد اکثر 10 کاراکتر را در خود نگاه دارد.
در زبان c امکان تعریف ثابت رشته ای نیز وجود دارد . یک ثابت رشته ای دنباله ای از کاراکتر ها است که در داخل " قرار می گیرد .بعنوان مثال "ALI"نشان دهنده یک ثابت رشته ای است.
توجه کنید که هنگامی که از " برای یک ثابت رشته ای استفاده می کنید کامپایلر یک علامت NULLدر انتهای رشته اضافه می کند.
در هنگام مقدار دهی اولیه نمی توانید در برنامه از عملگر = برای مقدار دهی به یک رشته استفاده نمایید.به عنوان مثال دستور زیر خطای نحوی محسوب می گردد:
Char name[10];
Name="ali";
فراموش نکنید که رشته ها در حقیقت یک آرایه هستند و نمی توان کل یک ارایه را با یک دستور مقدار دهی کرد.برای مقدار دهی به یک رشته باید به تک تک عناصر ان را جداگانه مقدار داد .
خواندن و نوشتن رشته ها
برای خواندن ونوشتن رشته ها می توان از توابع scanf و printf استفاده کرد . تنها نکته این است که در داخل رشته کنترلی باید ازs % استفاده کرد .مثال:
Include
Void main()
{
Char name [20];
printf("what is your name? :");
scanf("%s",name);
}
همانطور که می بینید در هنگام ارسال متغیر name به عنوان scanf و printf تنها نام ان بدون [] استفاده شده است. نکته دیگر اینکه در هنگام ارسال name به تابع scnaf از علامت & استفاده نشده است.
نکته ای که در مورد تابع scnaf وجود دارد این است که اگر رشه دو قسمتی باشد مانندmohamar reza فقط mohamad را در متغیر name قرار داده است.
دلیل این است که تابع scanf به محض رسیدن به کاراکتر space گمان می کند که رشته خاتمه یافته است و
ازبقیه صرفنظر می کند. برای رفع این مشکل می توان از تابع دیگری به نام gets استفاده کرد. نکته مهم این است که تابــــــــع gets تا زمانیکه ENTER فشرده نشده است به خواندن داده ها از صفحه کلید ادامه می دهـــــد. لازم به ذکر است که برای چاپ رشته ها نیز تابعی بنام puts وجود دارد.
تابع strlen
این تابع یک رشته را دریافت کرده است و طول ان را باز می گرداند.
Int strlen( const char string[])
{
Int i;
for(i=0; string[];i++)
return (i);
}
برنامه زیر نحوه استفاده از strlen را نشان می دهد:
Void main()
{
char text[100];
printf("enter a text :");
gets(text);
len=strlen(text);
printf("lengh of your text is%d",len);
}
ادامه دارد......






















کامپیوتر و اینترنت