رشته ها (Strings)
«رشته (String)» یعنی متن. مثل "Hello World". در C نوع String جدا نداریم. بنابراین با «کاراکتر (Character)» و «آرایه (Array)» یک رشته می سازیم. یعنی چند کاراکتر کنار هم.
ساخت رشته ها در C
برای ساخت رشته، از آرایه char با کوتیشن دوتایی استفاده کن.
char greetings[] = "Hello World!";
برای چاپ رشته، از printf با مشخص کننده %s استفاده کن.
char greetings[] = "Hello World!";
printf("%s", greetings);
دسترسی به عناصر رشته
چون رشته یک آرایه است، با اندیس به خانه ها دسترسی داریم.
char greetings[] = "Hello World!";
printf("%c", greetings[0]);
نکته: برای چاپ «تک کاراکتر»، از %c استفاده کن.
تغییر کاراکتر در رشته
با اندیس و کوتیشن تکی، یک کاراکتر را عوض کن.
char greetings[] = "Hello World!";
greetings[0] = 'J';
printf("%s", greetings);
حلقه روی رشته ها
می توانی روی کاراکترها با for بگردی.
char carName[] = "Volvo";
int i;
for (i = 0; i < 5; ++i) {
printf("%c\n", carName[i]);
}
اما بهتر است طول را با sizeof حساب کنی تا امن تر شود.
char carName[] = "Volvo";
int length = sizeof(carName) / sizeof(carName[0]);
int i;
for (i = 0; i < length; ++i) {
printf("%c\n", carName[i]);
}
روش دیگر ساخت رشته
می توانی با لیست کاراکترها و «\0» بسازی. \0 یعنی پایان رشته.
char greetings[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0' };
printf("%s", greetings);
تفاوت ها
روش اول ساده تر است و \0 را خود C اضافه می کند. اندازه ها برابرند.
char greetings[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0' };
char greetings2[] = "Hello World!";
printf("%zu\n", sizeof(greetings));
printf("%zu\n", sizeof(greetings2));
مثال واقعی
یک پیام خوش آمد ساده با دو رشته بساز.
char message[] = "Good to see you,";
char fname[] = "John";
printf("%s %s!", message, fname);
گام های عملی
- رشته را با char[] بساز.
- برای چاپ رشته از %s استفاده کن.
- برای تک حرف از %c استفاده کن.
- طول را با sizeof محاسبه کن.
برای حلقه آرایه ها به حلقه روی آرایه سر بزن. درباره طول، اندازه آرایه را ببین. همچنین صفحه رشته ها مرجع اصلی این مبحث است.
جمع بندی سریع
- رشته در C یک آرایه char است.
- برای چاپ متن از %s استفاده کن.
- \0 پایان رشته را مشخص می کند.
- اندیس ها از صفر شروع می شوند.