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