توابع رشتهای در C
توابع کتابخانه string.h شامل strlen، strcpy، strcat و strcmp
کتابخانه string.h
کتابخانه string.h توابع مفیدی برای کار با رشتهها دارد. مهمترینها را یاد میگیرید:
strlen — طول رشته
char str[] = "Hello";
printf("%zu", strlen(str)); // 5 (بدون کاراکتر تهی)
strcpy — کپی رشته
char src[] = "Hello";
char dest[20];
strcpy(dest, src); // محتوای src در dest کپی میشود
printf("%s", dest); // Hello
⚠️ مقصد باید فضای کافی داشته باشد!
strcat — چسباندن رشتهها
char str1[20] = "Hello ";
char str2[] = "World";
strcat(str1, str2); // str1 میشود "Hello World"
printf("%s", str1);
strcmp — مقایسه رشتهها
char a[] = "apple";
char b[] = "banana";
int result = strcmp(a, b);
// 0 یعنی مساوی
// منفی یعنی a قبل از b
// مثبت یعنی a بعد از b
⚠️ برای مقایسه رشتهها هرگز از == استفاده نکنید! (آدرسها را مقایسه میکند نه محتوا را)
جدول توابع مهم string.h
| تابع | عملکرد |
|---|---|
strlen(s) | طول رشته |
strcpy(d, s) | کپی s در d |
strncpy(d, s, n) | کپی حداکثر n کاراکتر (امنتر) |
strcat(d, s) | چسباندن s به انتهای d |
strcmp(a, b) | مقایسه دو رشته |
strchr(s, c) | جستجوی کاراکتر در رشته |
strstr(s, sub) | جستجوی زیررشته در رشته |
مثال کامل
#include <stdio.h>
#include <string.h>
int main() {
char first[50] = "Learning ";
char last[] = "City";
strcat(first, last); // "Learning City"
printf("Full: %s\n", first);
printf("Length: %zu\n", strlen(first));
if (strcmp(first, "Learning City") == 0) {
printf("دقیقاً برابر است!");
}
return 0;
}
نکات مهم
- همیشه برای مقصد کپی/چسباندن، فضای کافی در نظر بگیرید
- strcmp حساس به حروف بزرگ/کوچک است
- نسخههای n-دار (مثل strncpy) امنترند و از سرریز بافر جلوگیری میکنند
این مبحث بخشی از دوره آموزش کامل زبان C است.