Chuỗi trong C



Chuỗi trong ngôn ngữ lập trình C thực chất là mảng một chiều của các ký tự mà kết thúc bởi một ký tự null '\0'.

Phần khai báo và khởi tạo dưới đây tạo ra một chuỗi bao gồm một từ "Hello". Để giữ các giá trị null tại cuối của mảng, cỡ của mảng các ký tự bao gồm một chuỗi phải nhiều hơn số lượng các ký tự trong từ khóa "Hello".

char loichao[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

Nếu bạn theo quy tắc khởi tạo các chuỗi, bạn có thể viết lệnh như sau:

char loichao[] = "Hello";

Dưới đây là phần biểu diễn ô nhớ cho đoạn chuỗi trên trong ngôn ngữ C/C++:

Biểu diễn chuỗi trong C/C++

Thực tế, bạn không đặt ký tự null tại vị trí cuối cùng của biến hằng số. Bộ biên dịch C tự động thêm '\0' tại ví trí cuối cùng của chuỗi khi nó khởi tạo chuỗi. Cùng thử ví dụ in ra chuỗi sau đây:

#include <stdio.h>

int main ()
{
   char loichao[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

   printf("Khi gap nhau, ban chao: %s\n", loichao );
   
   printf("\n===========================\n");
   printf("VietJack chuc cac ban hoc tot! \n");

   return 0;
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Chuỗi trong C
Quảng cáo

Ngôn ngữ C hỗ trợ một dãy rộng rãi các hàm để thao tác các chuỗi kết thúc là null:

STT Hàm & Mục đích
1 strcpy(s1, s2);

Sao chép chuỗi s2 cho chuỗi s1.

2 strcat(s1, s2);

Nối chuỗi s2 vào cuối chuỗi s1.

3 strlen(s1);

Trả về độ dài của chuỗi s1.

4 strcmp(s1, s2);

Trả về 0 nếu s1 và s2 là như nhau; nhỏ hơn 0 nếu s1<s2; lớn hơn 0 nếu s1>s2.

5 strchr(s1, ch);

Trả về con trỏ tới vị trí đầu tiên của ch trong s1.

6 strstr(s1, s2);

Trả về con trỏ tới vị trí đầu tiên của chuỗi s2 trong chuỗi s1.

Quảng cáo

Dưới đây là ví dụ cho việc sử dụng một vài hàm bên trên:

#include <stdio.h>
#include <string.h>  /* thu vien cho cac ham xu ly chuoi*/

int main ()
{
   char chuoi1[12] = "Hello";
   char chuoi2[12] = "Vietjack";
   char chuoi3[12];
   int  dodai ;

   /* sao chep chuoi1 vao trong chuoi3 */
   strcpy(chuoi3, chuoi1);
   printf("Ban su dung ham strcpy( chuoi3, chuoi1) de sao chep:  %s\n", chuoi3 );

   /* noi hai chuoi: chuoi1 va chuoi2 */
   strcat( chuoi1, chuoi2);
   printf("Ban su dung ham strcat( chuoi1, chuoi2) de noi chuoi:   %s\n", chuoi1 );

   /* tinh do dai cua chuoi1 sau khi noi chuoi */
   dodai = strlen(chuoi1);
   printf("Ban su dung ham strlen(chuoi1) de tinh do dai:  %d\n", dodai );
   
   printf("\n===========================\n");
   printf("VietJack chuc cac ban hoc tot! \n");

   return 0;
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Chuỗi trong C

Bạn có thể tìm thấy một danh sách đầy đủ các hàm liên quan tới chuỗi trong Thư viện tiêu chuẩn C.

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học lập trình C phổ biến khác tại VietJack:



Tài liệu giáo viên