Xem thêm

Strings trong ngôn ngữ lập trình C

Huy Erick
Cú pháp khai báo chuỗi trong ngôn ngữ C Để khai báo một chuỗi trong ngôn ngữ C, chúng ta chỉ cần khai báo một mảng một chiều. Dưới đây là cú pháp cơ bản...

strings-in-c

Cú pháp khai báo chuỗi trong ngôn ngữ C

Để khai báo một chuỗi trong ngôn ngữ C, chúng ta chỉ cần khai báo một mảng một chiều. Dưới đây là cú pháp cơ bản để khai báo một chuỗi.

char ten_chuoi[kich_thuoc];

Trong cú pháp trên, ten_chuoi là tên của biến chuỗi và kich_thuoc được sử dụng để định nghĩa độ dài của chuỗi, tức là số ký tự mà chuỗi sẽ lưu trữ.

Sự khác biệt giữa một mảng ký tự và một chuỗi trong C là chuỗi kết thúc bằng một ký tự null '\0' duy nhất.

Khởi tạo chuỗi trong ngôn ngữ C

Chuỗi trong ngôn ngữ C có thể được khởi tạo theo nhiều cách khác nhau. Dưới đây là các ví dụ để khai báo một chuỗi với tên str và khởi tạo nó với nội dung là "GeeksforGeeks".

1. Gán chuỗi mẫu mà không khai báo kích thước

Chuỗi mẫu có thể được gán mà không khai báo kích thước. Trong trường hợp này, tên của chuỗi str sẽ hoạt động như một con trỏ vì nó là một mảng.

char str[] = "GeeksforGeeks";

2. Gán chuỗi mẫu với kích thước đã định sẵn

Chuỗi mẫu cũng có thể được gán với kích thước đã định sẵn. Nhưng chúng ta luôn phải đếm thêm một không gian bổ sung được gán cho ký tự null. Nếu chúng ta muốn lưu trữ một chuỗi có kích thước n, chúng ta luôn phải khai báo một mảng có kích thước bằng hoặc lớn hơn n+1.

char str[50] = "GeeksforGeeks";

3. Gán ký tự một cách từng ký tự với kích thước

Chúng ta cũng có thể gán chuỗi từng ký tự một. Nhưng chúng ta phải nhớ gán ký tự kết thúc là '\0', ký tự null.

char str[14] = { 'G','e','e','k','s','f','o','r','G','e','e','k','s','\0'};

4. Gán ký tự một cách từng ký tự mà không khai báo kích thước

Chúng ta cũng có thể gán từng ký tự mà không khai báo kích thước và sử dụng ký tự null ở cuối. Kích thước của chuỗi được xác định tự động bởi trình biên dịch.

char str[] = { 'G','e','e','k','s','f','o','r','G','e','e','k','s','\0'};

Lưu ý: Khi trình biên dịch gặp một chuỗi ký tự nằm trong dấu ngoặc kép, một ký tự null '\0' sẽ được thêm vào cuối chuỗi mặc định.

Hãy xem một ví dụ để hiểu rõ hơn về việc khai báo, khởi tạo chuỗi và cách in chuỗi cùng với kích thước của nó.

Ví dụ về chuỗi trong ngôn ngữ C

Chúng ta có thể thấy trong chương trình trên rằng các chuỗi có thể được in ra màn hình bằng cách sử dụng câu lệnh printf giống như chúng ta in ra bất kỳ biến nào khác. Khác với mảng, chúng ta không cần in một chuỗi, ký tự từng ký tự.

Lưu ý: Ngôn ngữ C không cung cấp một kiểu dữ liệu được tích hợp sẵn cho các chuỗi, nhưng nó có một định dạng chuyên cho chuỗi %s có thể được sử dụng để in và đọc các chuỗi trực tiếp.

Đọc một chuỗi từ người dùng

Ví dụ dưới đây minh họa cách nhập chuỗi sử dụng hàm scanf() trong ngôn ngữ C.

Đầu vào

GeeksforGeeks

Đầu ra

GeeksforGeeks

Chúng ta có thể thấy trong chương trình trên rằng chuỗi cũng có thể được đọc bằng một câu lệnh scanf duy nhất. Bạn cũng có thể tự hỏi tại sao chúng tôi không sử dụng dấu “&” với tên chuỗi “str” trong câu lệnh scanf! Để hiểu điều này, bạn sẽ phải nhớ kiến thức về câu lệnh scanf. Chúng ta biết rằng dấu "&" được sử dụng để cung cấp địa chỉ của biến cho hàm scanf() để lưu trữ giá trị đã đọc trong bộ nhớ. Vì str[] là một mảng ký tự, việc sử dụng str mà không có dấu ngoặc "[]" sẽ trả về địa chỉ gốc của chuỗi này. Đó là lý do tại sao chúng tôi không sử dụng dấu "&" trong trường hợp này vì chúng tôi đã cung cấp địa chỉ gốc của chuỗi cho scanf.

1