C – Strings สตริง ภาษา C
ที่จริงแล้ว สตริงคืออาร์เรย์ของอักขระหนึ่งมิติที่สิ้นสุดโดยอักขระ null ‘\0’ ดังนั้น null สายประกอบด้วยอักขระที่ประกอบด้วยสตริงตามด้วย null
การประกาศและการเริ่มต้นต่อไปนี้สร้างสตริงที่ประกอบด้วยคำว่า “Hello” หากต้องการเก็บอักขระ null ไว้ท้ายอาร์เรย์ ขนาดของอาร์เรย์อักขระที่มีสตริงจะมากกว่าจำนวนอักขระในคำว่า “Hello” หนึ่งตัว
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
หากคุณปฏิบัติตามกฎการเริ่มต้นอาร์เรย์ คุณสามารถเขียนคำสั่งข้างต้นได้ดังนี้ −
char greeting[] = "Hello";
ต่อไปนี้เป็นการนำเสนอหน่วยความจำของสตริงที่กำหนดไว้ข้างต้นใน C/C++ −
ที่จริงแล้ว คุณไม่ได้วางอักขระ null ไว้ที่ส่วนท้ายของค่าคงที่สตริง คอมไพเลอร์ C จะวาง ‘\0’ ที่ส่วนท้ายของสตริงโดยอัตโนมัติเมื่อเริ่มต้นอาร์เรย์ ให้เราลองพิมพ์สตริงที่กล่าวถึงข้างต้น −
#include <stdio.h>
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
printf("Greeting message: %s\n", greeting );
return 0;
}
เมื่อโค้ดด้านบนถูกคอมไพล์และรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Greeting message: Hello
C รองรับฟังก์ชันที่หลากหลายที่จัดการสตริงที่สิ้นสุดด้วยค่า null −
Sr.No. | Function & Purpose |
---|---|
1 | strcpy(s1, s2);คัดลอกสตริง s2 ลงในสตริง s1 |
2 | strcat(s1, s2);เชื่อมสตริง s2 เข้ากับส่วนท้ายของสตริง s1 |
3 | strlen(s1);ส่งกลับความยาวของสตริง s1 |
4 | strcmp(s1, s2);ส่งกลับ 0 ถ้า s1 และ s2 เหมือนกัน น้อยกว่า 0 ถ้า s1<s2; มากกว่า 0 ถ้า s1>s2 |
5 | strchr(s1, ch);ส่งกลับตัวชี้ไปที่การเกิดขึ้นครั้งแรกของอักขระ ch ในสตริง s1 |
6 | strstr(s1, s2);ส่งกลับตัวชี้ไปที่การเกิดขึ้นครั้งแรกของสตริง s2 ในสตริง s1 |
ตัวอย่างต่อไปนี้ใช้ฟังก์ชันบางส่วนที่กล่าวถึงข้างต้น −
#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;
}
เมื่อโค้ดด้านบนถูกคอมไพล์และรัน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10