Chuỗi Ký Tự Trong C

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.

Bạn đang xem: Chuỗi ký tự trong c


Chuỗi trong thiết kế C

Trong phần này, các bạn sẽ được mày mò các kiến thức liên quan mang đến string xuất xắc chuỗi vào C: biện pháp khai báo, khởi tạo nên và thực hiện chúng mang lại các hoạt động vào/ra trải qua các ví dụ.

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

char c<> = “c string”;

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

Làm gắng nào để khai báo chuỗi trong 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 gồm 5 cam kết tự.

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

Bạn có thể khởi tạo thành 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 lấy ví dụ như này, tôi đã từng gán 6 ký 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ự. Tuy nhiên, đều thứ đều diễn ra khá tệ cùng bạn không nên làm những việc tương tự như thế.

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

Mảng cam kết tự trong C và chuỗi cam kết tự là 2 phần tử đồng hạng nhị trong lập trình 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 tiêu dùng nhập vào

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

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

Ví dụ 1: 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 dù tôi đang nhập Dennis Ritchie vào lập trình sẵn trên tuy thế chỉ gồm “Dennis” là được tàng trữ trong chuỗi name. Bởi vì có một không gian phía sau Dennis.

Làm chũm nào nhằm đọc một mẫu văn bản?

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

Ví dụ 2: Hàm fgets() với 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() nhằm đọ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 đó, tôi rất có thể lấy về tối đa 30 ký tự làm đầu vào và cũng đó 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ính năng lấy đầu vào do người tiêu dùng nhập. Mặc dù nhiên, nó không phải là hàm tiêu chuẩn trong lập trình C.

Bởi vì hàm gets() được cho phép bạn nhập chuỗi trong C độ dài ký tự tùy ý. Điều này sẽ dẫn mang lại 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ương tự như mảng. Xem chi tiết cách truyền mảng vào hàm trên đây.

Xem thêm: Trị Mụn Với Bột Cám Gạo Trị Mụn, Cách Làm Mặt Nạ Cám Gạo Trị Mụn, Trắng Da Tại Nhà

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 hóa pointer

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

Tôi nghĩ về là bạn nên xem lại phần mảng và đổi thay pointer trong lập trình C trước khi xem ví dụ 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 được sử dụng

strlen() – tính độ lâu năm của một chuỗistrcpy() – xào luộc từ một chuỗi quý phái chuỗi khácstrcmp() – đối chiếu 2 chuỗistrcat() – nối 2 chuỗi

Hàm cách xử trí chuỗi trong C

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

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

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

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

Để giải quyết và xử lý vấn đề này, lập trình C đã cung cấp 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 thường xuyên được sử dụng

HàmChức năng của hàm
strlen()tính độ lâu năm của chuỗi
strcpy()sao chép một chuỗi sang trọng 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 thay đổi chuỗi sang trọng chữ in hoa

Các hàm giải pháp xử lý 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 xử trí chuỗi.

Hàm gets() và puts()

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

#include

int main()

char name<30>;

printf(“Enter name: “);

gets(name); //Function khổng lồ read string from user.

printf(“Name: “);

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

return 0;

Lưu ý, tuy vậy hàm gets() với puts() xử lý những chuỗi vào C tuy thế cả nhị hàm này số đông được xác minh trong tệp title “stdio.h”.