رشته‌ها در C

آشنایی با رشته‌ها به عنوان آرایه کاراکتری، کاراکتر پایان رشته و تعریف رشته در C

رشته در C چیست؟

برخلاف زبان‌های دیگر، در C نوع داده‌ای به نام «string» وجود ندارد! رشته در C در واقع یک آرایه از کاراکترها است که با کاراکتر خاص \0 (کاراکتر تهی یا null terminator) تمام می‌شود.

تعریف رشته

char greeting[] = "Hello";

این کد معادل زیر است:

char greeting[] = {\x27H\x27, \x27e\x27, \x27l\x27, \x27l\x27, \x27o\x27, \x27\x270\x27};

کاراکتر \0 حیاتی است

کاراکتر \0 به توابع مثل printf می‌گوید رشته کجا تمام می‌شود. بدون آن، توابع به خواندن حافظه ادامه می‌دهند و خروجی نامعتبر چاپ می‌شود!

اندیس012345
مقدارHello\0

پس رشته "Hello" در حافظه ۶ بایت اشغال می‌کند (۵ حرف + کاراکتر تهی).

تعریف با اندازه مشخص

char name[20] = "Learning City";  // فضای کافی برای رشته‌های تا 19 کاراکتر

چاپ رشته

char greeting[] = "Hello World!";
printf("%s", greeting);  // با %s

دسترسی به کاراکترهای رشته

چون رشته آرایه است، می‌توان به تک‌تک کاراکترها دسترسی داشت:

char name[] = "Ali";
printf("%c", name[0]);  // A

name[0] = \x27S\x27;         // حالا "Sli"
printf("%s", name);

پیمایش رشته با حلقه

char text[] = "Hello";
int length = 0;

while (text[length] != \x27\x5c0\x27) {  // تا رسیدن به کاراکتر تهی
    length++;
}
printf("طول رشته: %d", length);  // 5

تغییر مستقیم رشته literal مجاز نیست!

char *s = "Hello";
s[0] = \x27J\x27;  // ❌ رفتار نامعین! رشته literal در حافظه فقط‌خواندنی است

char arr[] = "Hello";
arr[0] = \x27J\x27;  // ✅ درست — آرایه کپی خودش را دارد

نکات مهم

این مبحث بخشی از دوره آموزش کامل زبان C است.

ابزارهای مرتبط