توابع کتابخانهای (در مورد رشتهها)
اغلب نسخههای زبان C، مجموعه وسیعی از توابع کتابخانهای در مورد عملیات روی رشتهها را پشتیبانی میکنند که در مبحث توابع کتابخانهای بحث کردیم. چند تابع بسیار متداول که در نوشتن برنامهها کاربرد زیادی دارند در جدول ۷ـ۱ آمده است.
جدول ۷ـ۱ چند تابع متداول در برنامههای کاربردی
اگر بخواهیم درمورد مقایسه دو رشته، تمایز بین حروف بزرگ و کوچک نادیده گرفته شود، تابع strcmp را به صورت strcmpi به کار میبریم.
در ضمن یادآور میشویم که توابع کتابخانهای مربوط به رشتهها در فایل string.h قرار دارند. پس اگر بخواهیم در برنامهای از این تابع استفاده کنیم، باید دستور # include<string.h> را نیز قبل از تابع main به کار بریم.
حال به چند مثال در مورد رشتهها توجه کنید.
v مثال ۷ـ۱۷ برنامه زیر نحوه استفاده و کاربرد چند تابع کتابخانهای را نشان میدهد.
# include<string.h>
# include<stdio.h>
main ()
{
char s1[80] , s2[80] , s3[80] ;
gets (s1) ;
gets (s2) ;
printf (“\n Lengths: %d %d\n” , strlen (s1) , strlen (s2)) ;
if (!strcmp (s1 , s2))
printf (“\n The strings are equal\n”) ;
strcpy (s1 , s3) ;
strcat (s1 , s2) ;
printf (“\n %s” , s3) ;
printf (“\n %s” , s1) ;
}
این برنامه دو رشته از ورودی میخواند و آن دو را به هم متصل میکند.اگر این برنامه را اجرا و برای دو رشته s1 و s2 کلمه “computer science” را وارد کنیم، خروجی برنامه مزبور به صورت زیر خواهد بود.
Lengths: ۱۶ ۱۶
The strings are equal
computer science
computer sciencecomputer science
v
v مثال ۷ـ۱۸ برنامهای بنویسید که اسامی n نفر دانشجو را بخواند، سپس آنها را به ترتیب الفبا مرتب و چاپ کند. n، حداکثر ۱۵ است که با اولین دستور ورودی خوانده میشود.
# include<stdio.h>
# include<string.h>
main ()
{
int i , n , j ;
char name [15][12] , temp [12] ;
scanf (“%d” , &n) ;
for (i=0 ; a<n ; ++i)
scanf (“%s” , &name[i]) ;
for (i=1 ; i<n ; ++i)
for (j=0 ; j<n-i ; ++j)
if (strcmp (name[j] , name [j+1]) > 0)
{
strcpy (temp , name [j]) ;
strcpy (name[j] , name [j+1]) ;
strcpy (name[j+1] , temp) ;
}
for (i=0 ; i<n ; ++i)
printf (“\n %s” , name[i]) ;
}
در این برنامه از آرایههای دوبعدی، روش مرتب سازی حبابی و چند تابع کتابخانهای رشتهای استفاده شده است.