Bài 56

      11

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


Chuỗi trong lập trình sẵn C

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

*
*
Trong lập trình sẵn C, chuỗi là một trong những chuỗi các ký từ bỏ được dứt bằng ký kết tự trống rỗng . Ví dụ:

char c<> = “c string”;

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

Làm nuốm nào để khai báo chuỗi vào C?

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

char s<5>;

Tôi vẫn khai báo một chuỗi có 5 cam kết tự.

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

Bạn hoàn toàn có thể khởi chế tạo ra chuỗi theo những phương pháp 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 1 ví dụ khác:

char c<5> = “abcde”;

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

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

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

char c<100>;

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

Lưu ý, chúng ta cũng có thể sử dụng hàm strcpy() để sao chép chuỗi trên.

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

Bạn hoàn toà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ó gặp khoảng white (dấu cách, mẫu mới, tab,…)

Ví dụ 1: sử dụng hàm scanf() nhằm đọ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 mặc dù tôi vẫn nhập Dennis Ritchie vào xây dựng 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 không gian phía sau Dennis.

Làm cố kỉnh nào để đọc một chiếc văn bản?

Bạn hoàn toàn có thể sử dụng hàm fgets() để đọc 1 dòng trong chuỗi. Và áp dụng 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 áp dụng 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 quả sizeof(name) là 30. Vị đó, tôi hoàn toàn có thể lấy về tối đa 30 ký kết tự làm nguồn vào và cũng đó là kích thước của chuỗi name.

Để in chuỗi, tôi sử dụng hàm puts(name);.

Lưu ý: Hàm gets() cũng có chức năng lấy đầu 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 sẵn C.

Bởi bởi hàm gets() cho phép bạn nhập chuỗi vào C độ dài ký tự tùy ý. Điều này sẽ 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 vào C

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

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

#include

void displayString(char str<>);

int main()

char str<50>;

printf(“Enter string: “);

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

displayString(str); // Passing string lớn a function.

return 0;

void displayString(char str<>)

printf(“String Output: “);

puts(str);

Chuỗi và biến hóa pointer

Tương trường đoản cú như mảng, tên chuỗi cũng được phân tung thành biến pointer. Vị đó, bạn cũng có thể sử dụng biến chuyển pointer nhằm thực hiện thao tác trên các bộ phận của chuỗi.

Tôi nghĩ là bạn nên xem lại phần mảng và biến chuyển pointer trong thiết kế C trước lúc 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 giải pháp xử lý chuỗi thường xuyên được sử dụng

strlen() – tính độ nhiều năm của một chuỗistrcpy() – xào luộc từ một chuỗi sang 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 vào C

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

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

Bên cạnh đó, bạn cũng sẽ học được cách lấy chuỗi do người tiêu dùng nhập vào và triển khai các làm việc trên chuỗi.

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

Tuy nhiên, ko phải toàn bộ các làm việc trên chuỗi phần đông được thực hiện một bí quyết 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, lập trình C đã hỗ trợ một lượng lớn những hàm giải pháp xử lý chuỗi trong thư viện tiêu chuẩn “string.h”.

Dưới đây là một số hàm giải pháp xử lý chuỗi thường được sử dụng

HàmChức năng của hàm
strlen()tính độ nhiều năm 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 đổi chuỗi quý phái chữ thường
strupr()chuyển thay đổi chuỗi sang chữ in hoa

Các hàm 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ã bên dưới để chạy các hàm xử trí chuỗi.

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

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

#include

int main()

char name<30>;

printf(“Enter name: “);

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

printf(“Name: “);

puts(name); //Function khổng lồ display string.

return 0;

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