Trang nhà | KIẾN THỨC LẬP TRÌNH | C/C++ | Kiến thức về chuỗi (string) trong C và biện pháp nhập xuất chuỗi vào C.

Bạn đang xem: Hướng dẫn và ví dụ c/c++ string


Chuỗi trong thiết kế C

Trong phần này, các bạn sẽ được tìm hiểu các kiến thức liên quan mang đến string tuyệt chuỗi vào C: cách khai báo, khởi tạo nên và sử dụng chúng mang đến các hoạt động vào/ra trải qua các ví dụ.

*
*
Trong xây dựng C, chuỗi là một trong chuỗi những ký trường đoản cú được hoàn thành bằng ký kết tự rỗng . Ví dụ:

char c<> = “c string”;

Khi trình biên dịch chạm mặt một chuỗi có các ký tự được đặt trong vệt <> thì theo mặc định, nó đang thêm một ký kết tự rỗng vào cuối.

Làm vắt nào nhằm khai báo chuỗi trong C?

Dưới đây là cách khai báo chuỗi ký kết tự vào C:

char s<5>;

Tôi sẽ khai báo một chuỗi bao gồm 5 ký kết tự.

Cách khởi chế tác chuỗi

Bạn hoàn toàn có thể khởi tạo ra chuỗi theo các cách sau đây:

char c<> = “abcd”;

char c<50> = “abcd”;

char c<> = ‘a’, ‘b’, ‘c’, ‘d’, ‘’;

char c<5> = ‘a’, ‘b’, ‘c’, ‘d’, ‘’;

Hãy xem sang một ví dụ khác:

char c<5> = “abcde”;

Trong ví dụ này, tôi đã từng gán 6 ký tự (ký tự sau cùng là ‘’) đến mảng char – mảng này chỉ tất cả 5 cam kết tự. Tuy nhiên, hầu như thứ đều diễn ra khá tệ với bạn không nên làm những việc tương tự như như thế.

Gán giá bán trị đến chuỗi

Mảng cam kết tự trong C và chuỗi ký kết tự là 2 bộ phận đồng hạng nhì trong lập trình sẵn C. Bọn chúng không cung cấp toán tử gán lúc nó được khai báo. Ví dụ,

char c<100>;

c = “C programming”; // Error! array type is not assignable.

Lưu ý, bạn có thể sử dụng hàm strcpy() để xào nấu chuỗi trên.

Đọc chuỗi mà người dùng nhập vào

Bạn có thể sử dụng hàm scanf() để đọc một chuỗi.

Hàm scanf() hiểu một chuỗi ký tự cho đến khi nó chạm mặt khoảng trắng (dấu cách, chiếc mới, tab,…)

Ví dụ 1: cần sử dụng hàm scanf() để đọc một chuỗi

#include

int main()

char name<20>;

printf(“Enter name: “);

scanf(“%s”, name);

printf(“Your name is %s.”, name);

return 0;

Đầu raEnter name: Dennis RitchieYour name is Dennis.Mặc dù tôi đã nhập Dennis Ritchie vào thiết kế trên tuy nhiên chỉ bao gồm “Dennis” là được tàng trữ trong chuỗi name. Cũng chính vì có một khoảng không phía sau Dennis.

Làm cầm cố nào để đọc một loại văn bản?

Bạn rất có thể sử dụng hàm fgets() để đọc 1 chiếc trong chuỗi. Và sử dụng hàm puts() để hiển thị chuỗi.

Ví dụ 2: Hàm fgets() cùng put()

#include

int main()

char name<30>;

printf(“Enter name: “);

fgets(name, sizeof(name), stdin); // read string

printf(“Name: “);

puts(name); // display string

return 0;

Đầu raEnter name: Tom HanksName: Tom Hanks

Dưới đây, tôi thực hiện hàm fgets() để đọc một chuỗi do người tiêu dùng nhập vào.fgets(name, sizeof(name), stdlin); // read string

Kết trái sizeof(name) là 30. Bởi vì đó, tôi có thể lấy về tối đa 30 ký tự làm đầu vào và cũng chính là kích thước của chuỗi name.

Để in chuỗi, tôi thực hiện hàm puts(name);.

Lưu ý: Hàm gets() cũng có tác dụng lấy đầu vào do người tiêu dùng nhập. Tuy nhiên, nó chưa hẳn là hàm tiêu chuẩn trong xây dựng C.

Bởi vày hàm gets() cho phép bạn nhập chuỗi vào C độ dài cam kết tự tùy ý. Điều này vẫn dẫn cho tình trạng tràn bộ lưu trữ đệm.

Truyền chuỗi vào hàm nhập chuỗi trong C

String vào C có thể được truyền vào hàm theo cách tựa như như mảng. Xem chi tiết cách truyền mảng vào hàm tại đây.

Xem thêm: Iphone Hàng Nhập Khẩu Là Gì, Điện Thoại Iphone Phiên Bản Quốc Tế Là Gì

Ví dụ 3: Truyền một chuỗi vào một hàm

#include

void displayString(char str<>);

int main()

char str<50>;

printf(“Enter string: “);

fgets(str, sizeof(str), stdin);

displayString(str); // Passing string to a function.

return 0;

void displayString(char str<>)

printf(“String Output: “);

puts(str);

Chuỗi và biến đổi pointer

Tương từ như mảng, thương hiệu chuỗi cũng rất được phân tung thành vươn lên là pointer. Bởi vì đó, chúng ta cũng có thể sử dụng phát triển thành pointer để thực hiện thao tác làm việc trên các phần tử của chuỗi.

Tôi nghĩ là chúng ta nên xem lại phần mảng và đổi thay pointer trong lập trình sẵn C trước khi xem ví dụ bên dưới đây.

Ví dụ 4: Chuỗi và biến đổi pointer

#include

int main(void)

char name<> = “Harry Potter”;

printf(“%c”, *name); // Output: H

printf(“%c”, *(name+1)); // Output: a

printf(“%c”, *(name+7)); // Output: o

char *namePtr;

namePtr = name;

printf(“%c”, *namePtr); // Output: H

printf(“%c”, *(namePtr+1)); // Output: a

printf(“%c”, *(namePtr+7)); // Output: o

Các hàm cách xử lý chuỗi thường xuyên được sử dụng

strlen() – tính độ dài của một chuỗistrcpy() – xào nấu từ một chuỗi lịch sự chuỗi khácstrcmp() – so sánh 2 chuỗistrcat() – nối 2 chuỗi

Hàm xử lý chuỗi trong C

Thao tác trên chuỗi trong thiết kế C bằng phương pháp sử dụng các hàm thư viện.

Trong phần này, các bạn sẽ được học về cách làm việc trên chuỗi trong xây dựng C bằng phương pháp sử dụng các hàm tiêu chuẩn chỉnh như gets(), puts, strlen(),…

Bên cạnh đó, bạn cũng trở thành học được phương pháp lấy chuỗi do người tiêu dùng nhập vào và tiến hành các làm việc trên chuỗi.

Bạn nên thường xuyên làm việc trên những chuỗi, tùy thuộc vào vấn đề cần giải quyết.

Tuy nhiên, ko phải toàn bộ các thao tác làm việc trên chuỗi đa số được triển khai một cách thủ công, cũng chính vì điều này làm cho lập trình của khách hàng trở nên phức hợp và “cồng kềnh”.

Để xử lý vấn đề này, lập trình sẵn C đã cung ứng một lượng lớn các hàm cách xử trí chuỗi trong thư viện tiêu chuẩn “string.h”.

Dưới đấy là một số hàm xử trí chuỗi thường được sử dụng

HàmChức năng của hàm
strlen()tính độ dài của chuỗi
strcpy()sao chép một chuỗi thanh lịch chuỗi khác
strcat()nối 2 chuỗi
strcmp()so sánh 2 chuỗi
strlwr()chuyển thay đổi chuỗi lịch sự chữ thường
strupr()chuyển thay đổi chuỗi thanh lịch chữ in hoa

Các hàm cách xử trí chuỗi được xác minh trong tệp title “string.h”.

#include

Lưu ý: bạn phải thêm cả đoạn mã dưới để chạy các hàm cách xử trí chuỗi.

Hàm gets() với puts()

gets() với puts() là 2 hàm giải pháp xử lý chuỗi dùng để lấy đầu vào của chuỗi do người tiêu dùng nhập và hiển thị nó một phương pháp riêng lẻ. Chúng ta có thể xem lại phần Chuỗi trong lập trình sẵn C để biết thêm thông tin chi tiết.

#include

int main()

char name<30>;

printf(“Enter name: “);

gets(name); //Function lớn read string from user.

printf(“Name: “);

puts(name); //Function lớn display string.

return 0;

Lưu ý, tuy nhiên hàm gets() với puts() xử lý các chuỗi vào C nhưng cả nhì hàm này rất nhiều được khẳng định trong tệp tiêu đề “stdio.h”.