با سلام خدمت تمامی دوستان عزیز سایت پی وی لرن .و کاربرانی که دوره کامل آموزش زبان C را دنبال می کنند. و کاربرانی که با سری آموزش های زبان C همراهمون هستند. در جلسه قبل با اشاره گرها در C آشنا شدیم . در این جلسه رشته ها در C و کاراکتر null و نحوه و شرایط استفاده از آن را خواهیم دید.
رشته ها در واقع یک آرایه ی یک بعدی از کاراکتر ها هستند که با یک علامت ‘۰\’ پایان می پذیرند.بنابراین یک رشته خالی فقط شامل یک کاراکتر\۰′‘ می باشد. به این کاراکتر، null می گویند. اعلان زیر یک آرایه را که شامل کاراکترهای کلمه “Hello” است، ایجاد می کند. برای این که یک آرایه بتواند کاراکتر null در انتهای خود داشته باشد باید طول آرایه یک واحد بیشتر از طول کاراکترها باشد.
1 | char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; |
اگر از دستور مقدار دهی اولیه استفاده می کنید، می توانید مثال فوق را به صورت زیر بنویسید:
1 | char greeting[] = "Hello"; |
شکل پایین نحوه قرار گیری آرایه در حافظه در برنامه C نشان می دهد:
در حقیقت، شما یک کاراکتر NULL را در انتهای آرایه قرار نمی دهید.کامپایلر C به طور خودکار ‘\ ۰’ را در انتهای رشته هنگام مقداردهی اولیه اضافه می کند.
اجازه دهید سعی کنیم که رشته فوق را چاپ کنیم .
1 2 3 4 5 6 7 8 | #include <stdio.h> int main () { char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; printf("Greeting message: %s\n", greeting ); return 0; } |
زمانی که کد بالا توسط کامپایلر C کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 | Greeting message: Hello |
در زبان C، توابع زیادی به منظور دستکاری رشته هایی که با کاراکتر null خاتمه می یابند، وجود دارند.بعضی از آنها را ذر جدول زیر آمده است:
ردیف | تابع و اهداف |
۱ | ;strcpy(s1, s2) رشته S2 را به رشته S1 کپی می کند. |
۲ | ;strcat(s1, s2) رشته s2 را به پایان رشته s1 متصل می کند. |
۳ | ;strlen(s1) طول رشته s1 را برمی گرداند |
۴ | ;strcmp(s1, s2) اگر s1 و s2 یکسان باشند، ۰ را برمی گرداند؛ اگرکمتر از ۰ باشد s1 <s2؛ اگر بزرگتر از ۰ باشد s1> s2 |
۵ | ;strchr(s1, ch) یک اشاره گر را به اولین وقوع character ch در رشته s1 باز می گرداند. |
۶ | ;strstr(s1, s2) یک اشاره گر را به اولین وقوع رشته s2 در رشته s1 باز می گرداند. |
در مثال زیر برخی از توابع فوق ذکر شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h> #include <string.h> int main () { char str1[12] = "Hello"; char str2[12] = "World"; char str3[12]; int len ; /* copy str1 into str3 */ strcpy(str3, str1); printf("strcpy( str3, str1) : %s\n", str3 ); /* concatenates str1 and str2 */ strcat( str1, str2); printf("strcat( str1, str2): %s\n", str1 ); /* total lenghth of str1 after concatenation */ len = strlen(str1); printf("strlen(str1) : %d\n", len ); return 0; } |
زمانی که کد بالا را کامپایل و اجرا می کنید نتیجه زیر را می بینید.
1 2 3 | strcpy( str3, str1) : Hello strcat( str1, str2): HelloWorld strlen(str1) : 10 |
خوشحالیم ازاینکه در این مجموعه آموزشها همراه ما هستید.امیدوارم مفید واقع شده باشد. جلسه بعد را با ساختارها در C آغاز می کنیم.
Parisa
سلام
من میخواستم بازی قارچ خور در زبان ++c بنویسم
اگر بخوام یک شخصیت طراحی کنم که در مواجه با موانع بپر چطور باید این کارو بکنم؟