Trong lập trình C, một chuỗi là một dãy các ký tự được kết thúc bằng ký tự null char s[5]; 2. Ví dụ
char c[] = "c string";Khi trình biên dịch gặp một chuỗi các ký tự được đặt trong dấu ngoặc kép, theo mặc định, nó sẽ thêm một ký tự null char s[5]; 2 vào cuối
Làm thế nào để khai báo một chuỗi?
Đây là cách bạn có thể khai báo chuỗi
char s[5];Ở đây, chúng tôi đã khai báo một chuỗi gồm 5 ký tự
Làm thế nào để khởi tạo chuỗi?
Bạn có thể khởi tạo chuỗi theo một số cách
char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'};Hãy lấy một ví dụ khác
char c[5] = "abcde";Ở đây, chúng tôi đang cố gắng gán 6 ký tự (ký tự cuối cùng là char s[5]; 4) cho một mảng char s[5]; 5 có 5 ký tự. Điều này là xấu và bạn không bao giờ nên làm điều này
Gán giá trị cho chuỗi
Mảng và chuỗi là công dân hạng hai trong C; . Ví dụ,
________số 8Ghi chú. Thay vào đó, hãy sử dụng hàm strcpy() để sao chép chuỗi
Đọc chuỗi từ người dùng
Bạn có thể sử dụng hàm char s[5]; 6 để đọc một chuỗi
Hàm char s[5]; 6 đọc chuỗi ký tự cho đến khi gặp khoảng trắng (dấu cách, dòng mới, tab, v.v. )
ví dụ 1. scanf() để đọc một chuỗi
char c[] = "c string"; 1đầu ra
char c[] = "c string"; 2Mặc dù Dennis Ritchie đã được nhập vào chương trình trên nhưng chỉ có "Dennis" được lưu trong chuỗi tên. Đó là bởi vì có một khoảng trống sau Dennis
Cũng lưu ý rằng chúng tôi đã sử dụng tên mã thay vì char s[5]; 8 bằng char s[5]; 6
char c[] = "c string"; 5Điều này là do tên là một mảng char s[5]; 5 và chúng tôi biết rằng tên mảng phân rã thành con trỏ trong C
Do đó, tên trong char s[5]; 6 đã trỏ đến địa chỉ của phần tử đầu tiên trong chuỗi, đó là lý do tại sao chúng ta không cần sử dụng char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 2
Làm thế nào để đọc một dòng văn bản?
Bạn có thể sử dụng hàm char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 3 để đọc một dòng chuỗi. Và, bạn có thể sử dụng char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 4 để hiển thị chuỗi
ví dụ 2. fgets() và đặt()
char s[5]; 1đầu ra
char s[5]; 2Ở đây, chúng tôi đã sử dụng chức năng char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 3 để đọc một chuỗi từ người dùng
char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 6
Kết quả của char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 7 là 30. Do đó, chúng tôi có thể nhập tối đa 30 ký tự làm kích thước của chuỗi tên
Để in chuỗi, chúng tôi đã sử dụng char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 8
Ghi chú. Hàm char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 9 cũng có thể lấy đầu vào từ người dùng. Tuy nhiên, nó bị xóa khỏi tiêu chuẩn C
Đó là vì char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; 9 cho phép bạn nhập bất kỳ độ dài ký tự nào. Do đó, có thể có lỗi tràn bộ đệm
Truyền chuỗi cho hàm
Các chuỗi có thể được chuyển đến một hàm theo cách tương tự như các mảng. Tìm hiểu thêm về cách truyền mảng cho hàm
ví dụ 3. Truyền chuỗi vào Hàm
char s[5]; 0Chuỗi và con trỏ
Tương tự như mảng, tên chuỗi được "phân rã" thành con trỏ. Do đó, bạn có thể sử dụng con trỏ để thao tác với các phần tử của chuỗi. Chúng tôi khuyên bạn nên kiểm tra Mảng và Con trỏ trong C trước khi kiểm tra ví dụ này