توابع رشته (String Functions)
در C برای کار با «رشته (String)» از توابع آماده استفاده می کنیم. این توابع در یک کتابخانه به نام string.h هستند. با آن ها طول رشته، چسباندن، کپی و مقایسه را انجام می دهیم.
افزودن هدر string.h
برای استفاده از توابع رشته، این هدر را اضافه کن.
#include <string.h>
طول رشته با strlen
تابع strlen طول واقعی رشته را می دهد. منظور تعداد کاراکترهاست.
char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%zu", strlen(alphabet));
تفاوت strlen و sizeof
تابع sizeof اندازه حافظه را می دهد. بنابراین شامل \0 هم می شود.
char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// strlen فقط طول رشته را می دهد.
printf("%zu\n", strlen(alphabet));
// sizeof اندازه آرایه در بایت است.
printf("%zu\n", sizeof(alphabet));
sizeof همیشه بایت برمی گرداند
اگر ظرفیت آرایه بزرگ تر باشد، sizeof همان ظرفیت را نشان می دهد.
char alphabet[50] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%zu\n", strlen(alphabet));
printf("%zu\n", sizeof(alphabet));
چسباندن رشته ها با strcat
تابع strcat رشته دوم را به آخر اولی می چسباند.
char str1[20] = "Hello ";
char str2[] = "World!";
strcat(str1, str2);
printf("%s", str1);
نکته: ظرف مقصد باید جا داشته باشد. یعنی سرریز نشود.
کپی رشته با strcpy
تابع strcpy محتوای منبع را در مقصد کپی می کند.
char str1[20] = "Hello World!";
char str2[20];
strcpy(str2, str1);
printf("%s", str2);
هشدار: اندازه مقصد باید کافی باشد. وگرنه مشکل ایجاد می شود.
مقایسه رشته ها با strcmp
تابع strcmp اگر برابر باشند صفر می دهد. در غیر این صورت غیرصفر.
char str1[] = "Hello";
char str2[] = "Hello";
char str3[] = "Hi";
printf("%d\n", strcmp(str1, str2));
printf("%d\n", strcmp(str1, str3));
گام های عملی
- هدر
string.hرا اضافه کن. - تابع مناسب نیازت را انتخاب کن.
- حواست به اندازه مقصد باشد.
برای یادآوری مفاهیم رشته ها را ببین. همچنین کاراکترهای خاص را در رشته ها — کاراکترهای خاص مرور کن. راهنمای کامل توابع رشته همین صفحه است.
جمع بندی سریع
- strlen طول واقعی را می دهد.
- sizeof اندازه حافظه را می دهد.
- strcat رشته ها را می چسباند.
- strcpy کپی می کند؛ اندازه را بسنج.
- strcmp برابری را می سنجد.