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

Bạn đang xem: Bài 56


Chuỗi trong xây dựng C

Trong phần này, các bạn sẽ được tìm hiểu các kỹ năng liên quan mang đến string tốt chuỗi trong C: phương pháp khai báo, khởi chế tác và sử dụng chúng cho các hoạt động vào/ra thông qua các ví dụ.

*
*
Trong lập trình C, chuỗi là một trong chuỗi những ký trường đoản cú được xong xuôi bằng cam kết tự trống rỗng . Ví dụ:

char c<> = “c string”;

Khi trình biên dịch gặp gỡ một chuỗi có những ký trường đoản cú được để trong vệt <> thì theo mặc định, nó vẫn thêm một cam kết tự rỗng vào cuối.

Làm núm nào để khai báo chuỗi trong C?

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

char s<5>;

Tôi vẫn khai báo một chuỗi bao gồm 5 ký tự.

Cách khởi tạo ra chuỗi

Bạn rất có thể khởi sản xuất chuỗi theo những 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 qua một ví dụ khác:

char c<5> = “abcde”;

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

Gán giá chỉ trị mang lại chuỗi

Mảng ký kết tự trong C và chuỗi ký kết tự là 2 phần tử đồng hạng nhì trong xây dựng C. Chúng không hỗ trợ 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ũng có thể sử dụng hàm strcpy() để sao chép chuỗi trên.

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

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

Hàm scanf() đọc một chuỗi cam kết tự cho tới khi nó gặp khoảng white (dấu cách, loại mới, tab,…)

Ví dụ 1: 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 lập trình sẵn trên tuy nhiên chỉ tất cả “Dennis” là được tàng trữ trong chuỗi name. Chính vì có một khoảng trống phía sau Dennis.

Làm cố kỉnh nào nhằm đọc một mẫu văn bản?

Bạn có thể sử dụng hàm fgets() nhằm đọc 1 mẫu trong chuỗi. Và thực hiện hàm puts() nhằm hiển thị chuỗi.

Ví dụ 2: Hàm fgets() và 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 dùng nhập vào.fgets(name, sizeof(name), stdlin); // read string

Kết quả sizeof(name) là 30. Vì đó, tôi hoàn toàn có thể lấy 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 áp dụng hàm puts(name);.

Lưu ý: Hàm gets() cũng có công dụng lấy nguồn vào do người dùng nhập. Tuy nhiên, nó chưa phải là hàm tiêu chuẩn trong lập trình C.

Bởi vày hàm gets() có thể chấp nhận được bạn nhập chuỗi trong C độ dài ký kết tự tùy ý. Điều này đang dẫn đến tình trạng tràn bộ nhớ lưu trữ đệm.

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

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

Xem thêm: Hotaru Mp3 - Hotarubi No Mori E Amv Download (6

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 lớn a function.

return 0;

void displayString(char str<>)

printf(“String Output: “);

puts(str);

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

Tương từ bỏ như mảng, thương hiệu chuỗi cũng khá được phân chảy thành thay đổi pointer. Bởi đó, chúng ta có thể sử dụng biến pointer nhằm thực hiện làm việc trên các phần tử của chuỗi.

Tôi suy nghĩ là bạn nên xem lại phần mảng và phát triển thành pointer trong thiết kế C trước khi xem ví dụ bên dưới đây.

Ví dụ 4: Chuỗi và biến hóa 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 xử trí chuỗi hay được sử dụng

strlen() – tính độ lâu năm của một chuỗistrcpy() – sao chép 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 giải pháp xử lý chuỗi trong C

Thao tác bên 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 thiết kế C bằng cách 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 sẽ học được biện pháp lấy chuỗi do người tiêu dùng nhập vào và thực hiện các thao tác trên chuỗi.

Bạn đề nghị thường xuyên thao tác 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 tất cả các thao tác trên chuỗi phần đông được triển khai một biện pháp thủ công, chính vì điều này làm cho lập trình của người tiêu dùng trở nên phức tạp và “cồng kềnh”.

Để xử lý vấn đề này, xây dựng C đã cung ứng một lượng lớn các hàm xử lý chuỗi trong tủ sách tiêu chuẩn chỉnh “string.h”.

Dưới đó là một số hàm cách xử trí chuỗi hay đượ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 lịch sự chuỗi khác
strcat()nối 2 chuỗi
strcmp()so sánh 2 chuỗi
strlwr()chuyển thay đổi chuỗi quý phái chữ thường
strupr()chuyển đổi chuỗi sang trọng chữ in hoa

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

#include

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

Hàm gets() cùng puts()

gets() cùng puts() là 2 hàm xử lý chuỗi dùng để đưa đầu vào của chuỗi do người dùng nhập và hiển thị nó một phương pháp riêng lẻ. Chúng ta cũng 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 to display string.

return 0;

Lưu ý, mặc dù hàm gets() với puts() xử lý các chuỗi trong C mà lại cả nhì hàm này rất nhiều được xác minh trong tệp title “stdio.h”.