Bài đăng nổi bật


Mảng chuỗi/ký tự
Một chuỗi có thể được khai báo như là một mảng ký tự, và được kết thúc bởi một ký tự NULL. Mỗi ký tự của chuỗi chiếm 1 byte, và ký tự cuối cùng của chuỗi luôn luôn là ký tự ‘\0’. Ký tư ‘\0’ được gọi là ký tự null. Nó là một mã thoát (escape sequence)  tương tự như ‘\n’, thay thế cho ký tự có giá trị 0. Vì ‘\0’ luôn là ký tự cuối cùng của một chuỗi, nên các mảng ký tự phải có nhiều hơn một ký tự so với chiều dài tối đa mà chúng quản lý. Ví dụ, một mảng ary quản lý một chuỗi 10 ký tự phải được khai báo như sau:
         char ary[11];
Vị trí thêm vào được sử dụng để lưu trữ ký tự null. Nên nhớ rằng ký tự kết thúc (ký tự null) là rất quan trọng.
Các giá trị chuỗi có thể được nhập vào bằng cách sử dụng hàm scanf(). Với chuỗi ary được khai báo ở trên, mã lệnh nhập sẽ như sau:
         scanf(“%s”, ary);
Trong lệnh trên, ary xác định vị trí nơi mà lần lượt các ký tự của mảng sẽ được lưu trữ.
Ví dụ:
#include <stdio.h>
void main() {
         char ary[5];
         int i;
         printf(“\n Enter string: ”);
         scanf(“%s”, ary);
         printf(“\n The string is %s \n\n”, ary);
                  
         for (i = 0; i < 5; i++)
                   printf(“\t%d”, ary[i]);
}
Các kết quả thực thi chương trình với những dữ liệu nhập khác nhau như sau:
Nếu chuỗi được nhập là appl, kết quả sẽ là:
         The string is appl
                   97   112  112  108  0
Kết quả như trên là của 4 ký tự (appl) và ký tự thứ 5 là ký tự null. Điều này được thấy rõ với mã ASCII cho các ký tự được in ra ở dòng thứ hai. Ký tự thứ năm được in la 0, là giá trị của ký tự null.
Nếu chuỗi nhập vào là apple, kết quả sẽ là:
         The string is apple
                   97   112  112  108  101
Kết quả ở trên của là một dữ liệu đầu vào có 5 ký tự a, p, p, l và e. Nó không được xem là một chuỗi bởi vì ký tự thứ 5 của mảng không phải là \0. Một lần nữa, điều này được thấy rõ bằng dòng in ra mã ASCII của các ký tự a, p, p, l, e.
Nếu chuỗi được nhập vào là ap, thì kết quả sẽ là:
         The string is ap
                   97   112  0    6    100
Trong ví dụ trên, khi chỉ có hai ký tự được nhập, ký tự thứ ba sẽ là ký tự null. Điều này cho biết là chuỗi đã được kết thúc. Những ký tự còn lại là những ký tự không dự đoán được.
Trong trường hợp trên, tính quan trọng của ký tự null trở nên rõ ràng. Ký tự null xác định sự kết thúc của chuỗi và là cách duy nhất để các hàm làm việc với chuỗi sẽ biết đâu là điểm kết thúc của chuỗi.
Mặc dù C không có kiểu dữ liệu chuỗi, nhưng nó cho phép các hằng chuỗi. Một hằng chuỗi là một dãy các ký tự được đặt trong dấu nháy đôi (“”). Không giống như các hằng khác, nó không thể được sửa đổi trong chương trình. Ví dụ như:
         “Hi Aptechite!”
Trình biên dịch C sẽ tự động thêm vào ký tự null cuối chuỗi.
C hỗ trợ nhiều hàm cho chuỗi, các hàm này nằm trong thư viện chuẩn string.h. Một vài hàm được đưa ra trong bảng 11.1. Cách làm việc của các hàm này sẽ được thảo luận trong bài 17.
Tên hàm           Chức năng
strcpy(s1, s2)    Sao chép s2 vào s1
strcat(s1, s2)              Nối s2 vào cuối của s1
strlen(s1)           Trả về chiều dài của s1
strcmp(s1, s2)   Trả về 0 nếu s1 và s2 là giống nhau; nhỏ hơn 0 nếu s1<s2; lớn hơn 0 nếu s1> s2
strchr(s1, ch)              Trả về một con trỏ trỏ đến vị trí xuất hiện đầu tiên của ch trong s1

strstr(s1, s2)               Trả về một con trỏ trỏ đến vị trí xuất hiện đầu tiên của chuỗi s2 trong chuỗi s1

Post a Comment

أحدث أقدم