در زبان C رشته‌ها، آرایه‌ای از کاراکترها تعریف می‌شوند به طوری که هر کاراکتر رشته، درون یک عنصر از آرایه ذخیره می‌گردد. هر رشته به کاراکتر null که نشانه پایان است خاتمه می‌یابد. ثابت رشته‌ای در داخل دوبل گیومه قرار می‌گیرد و وقتی که ذخیره می‌گردد، کاراکتر null به طور خودکار به انتهای آن افزوده می‌شود. در داخل یک برنامه، کاراکتر null در فرم escape sequence با ” نشان داده می‌شود. ثابت رشته‌ای آرایه‌ای را معرفی می‌کند که محدوده یا اندیس پایین آن صفر و محدوده یا اندیس بالای آن تعداد کاراکترهایی است که در رشته وجود دارد.
مثال ۷ـ۹ به رشته زیر توجه کنید.
” payam noor university “
این رشته آرایه‌ای ۲۲ کاراکتری است (دو فضای خالی بین کلمات و یک نیز کاراکتر شمرده می‌شوند). تعریف این رشته ممکن است در آرایه‌ای کاراکتری به شکل زیر باشد.
char str[ ] = ” payam noor university “
متغیرهای رشته‌ای متغیرهایی‌اند که مقادیر آنها ممکن است یک رشته باشد. در واقع متغیرهای رشته‌ای،‌ آرایه‌هایی از نوع char اند.

مثال ۷ـ۱۰ برنامه زیر ۱۵ رشته (مثلاً اسامی ۱۵ نفر) را می‌خواند و آنها را در سطرهای متوالی چاپ می‌کند. فرض بر این است که طول هر رشته با درنظر گرفتن null character پایان رشته حداکثر ۱۲ کاراکتر است.
# include<stdio.h>
main ()
{
char name[12] ;
int i ;
for (i = 1 , i < = 15 ; ++i)
{
scanf (“%s” , name) ;
printf (“\n %s” , name) ;
}
}
ملاحظه می‌کنید که متغیر رشته‌ای name به صورت آرایه معرفی شده است. در ضمن در خواندن اطلاعات به کمک تابع scanf، فقط نام متغیر، بدون اپراتور آدرس (یعنی بدون علامت `&’) و بدون ذکر اندیس آرایه، به کار می‌رود، زیرا به طوری که گفتیم، نام آرایه آدرس اولین خانه یا اولین عنصر آن است. همچنین هم در موقع خواندن مقدار برای name و همین طور در چاپ مقدار آن از کد فرمت %s استفاده شده است.
می‌توان مجموعه‌ای از رشته‌ها را به صورت آرایه‌ای از رشته‌ها تعریف کرد. در اینجا چون خود رشته به تنهایی یک آرایه است، هر مجموعه از رشته‌ها می‌توانند آرایه‌ای دوبعدی را تشکیل دهند که اگر آنها را به صورت جدول مستطیل شکل تصور کنیم، هر سطر این جدول معرف یکی از رشته‌ها خواهد بود.

 مثال ۷ـ۱۱ قطعه برنامه زیر اسامی ۱۵ نفر را به آرایه رشته‌ای name می‌خواند و آنها را در سطرهای متوالی چاپ می‌کند.
# include<stdio.h>
main ()
{
char name[15][12] ;
int i ;
for (i = 0 ; i<15 ; ++i)
scanf (“%s” , &name[i]) ;
for (i = 0 ; i<15 ; ++i)
printf (“\n%s” , name[i]);
}
ملاحظه کنید که در خواندن اطلاعات رشته‌ای به آرایه و در چاپ کردن آن فقط بعد اول آرایه به کار برده شده است؛ یعنی در واقع اگر آرایه دو بعدی در این مجموعه از رشته‌ها را، همان طور که گفتیم، جدولی مستطیل شکل فرض کنیم که در هر سطر آن یک رشته قرار دارد، در خواندن اطلاعات هر بار سطری خوانده می‌شود که آدرس آن سطر و در نتیجه اپراتور آدرس نیز به کار رفته است. به ‌این طریق مشابه در چاپ کردن آن نیز هر بار اطلاعات یک سطر که شامل یک رشته است چاپ می‌گردد.