Lý Thuyết

Xâu bản chất là 1 mảng các ký tự được lưu trữ trên các ô nhớ liên tiếp và kết thúc bằng ký tự '\0', bạn có thể khởi tạo giá trị cho xâu giống như cho mảng:
                        
char str[] = "abcd";
char str[50] = "abcd";
char str[] = {'a', 'b', 'c', 'd', '\0'};
char str[] = {'a', 'b', 'c', 'd', '\0'};
char str[5] = {'a', 'b', 'c', 'd', '\0'};
                        
                    
Để nhập dữ liệu và hiển thị một xâu ra màn hình bạn dùng định dạng %s. Để nhập được dữ liệu có khoảng trắng cho xâu str bạn cần dùng câu lệnh gets(str); Xâu bản chất là 1 mảng các ký tự nên bạn có thể lấy ra phần tử thứ k trong xâu s bằng s[k - 1]; Bạn có thể sử dụng hàm strlen() (strlen là viết tắt của string length) trong thư viện string.h để lấy ra độ dài của 1 xâu (Khi làm thực tế bạn nên dùng hàm strlen() vì nó ngắn hơn). Để kiểm tra xem 2 xâu có giống nhau hay không bạn có thể dùng hàm strcmp() trong thư viện string.h. Hàm này sẽ trả về 0 nếu 2 xâu giống nhau, ngược lại hàm này sẽ trả về một số khác 0 nếu 2 xâu khác nhau. Giá trị của các ký tự in thường luôn bằng giá trị của các ký tự in hoa cộng với 32. Từ đó bạn có thể chuyển 1 ký tự từ in thường sang in hoa bằng cách trừ đi 32. Bạn hãy thử chạy đoạn code dưới đây để hiêu rõ hơn nhé:
                        
#include < stdio.h >

int main() {
    printf("a = %d\n", 'a');
    printf("b = %d\n", 'b');
    printf("c = %d\n", 'c');
    printf("d = %d\n\n", 'd');
    printf("A = %d\n", 'A');
    printf("B = %d\n", 'B');
    printf("C = %d\n", 'C');
    printf("D = %d\n", 'D');
    return 0;
}
                        
                    
Đoạn code dưới đây tạo ra xâu str lưu trữ được 99 ký tự (không phải là 100 do ký tự cuối cùng của một xâu luôn là '\0'), nhập dữ liệu cho xâu str và hiển thị xâu này ra màn hình.
                        
#include < stdio.h >

int main() {
	// Khai báo xâu str, xâu str lưu trữ được 99 phần tử
	char str[100];
	// Nhập dữ liệu vào xâu str
	scanf("%s", str);
	// Hiển thị xâu str ra màn hình
	printf("%s", str);
	return 0;
}
                    
                    
Lưu ý: + Khi nhập dữ liệu cho xâu thì không sử dụng toán tử & trong hàm scanf(). + Khi chạy chương trình ở trên máy, bạn không nhập tên và địa chỉ có khoảng trắng vì hàm scanf() không đọc được khoảng trắng. + Bạn không thể sử dụng toán tử == để kiểm tra 2 xâu có giống nhau hay không vì nếu áp dụng toán tử này lên 2 xâu thì đó là phép so sánh địa chỉ của phần tử đầu tiên của 2 xâu.

Chuỗi / Hàm Đệ Quy

Bài tiếp theo

Nhắc nhở: có các bài tập nhé.

BÀI TẬP
Bài tập 1
                                    
Bạn hãy viết chương trình nhập vào từ bàn phím xâu str
 và hiển thị xâu này ra màn hình.
                                    
                                
Bài tập 2
                                    
Cho xâu s được nhập từ bàn phím. 
Bạn hãy viết chương trình chuyển các ký tự in thường
trong xâu s thành in hoa và hiển thị xâu s ra màn hình.
                                    
                                
Bài tập 3
                                    
Viết chương trình nhập vào tên của 2 người, 
bạn hãy kiểm tra xem tên 2 người này có giống nhau không.
                                    
                                
Bài tập 4
                                    
Cho ký tự c và xâu s được nhập từ bàn phím.
Bạn hãy viết chương trình in ra số lần xuất hiện của ký tự c trong xâu s.
                                    
                                
Bài tập 5
                                    
Cho số nguyên n được nhập từ bàn phím, 
bạn hãy viết hàm đệ quy trả về n! (n giai thừa).