CÁC HÀM XỬ LÝ XÂU KÝ TỰ TRONG C
Ở bài bác Nhập xuất trong c họ đã làm cho quen với giải pháp khai báo, nhập xuất chuỗi ký tự vào C một cách 1-1 giản. Trong bài này bọn họ sẽ nói nhiều hơn nữa về những ví dụ, bài bác tập về chuỗi .
Bạn đang xem: Các hàm xử lý xâu ký tự trong c
1. Tổng quan
Chuỗi được coi như như là 1 mảng một chiều gồm các thành phần có loại char như ký tự, số lượng và bất kể ký tự đặc trưng như +, -, *, /, $, #,…Theo quy ước, một chuỗi vẫn được kết thúc bởi cam kết tự null (‘ ’ : kí tựrỗng).Ví dụ: chuỗi “Infoworld” được lưu trữ như sau:

Cách lưu trữ chuỗi ký kết tự
2. Một vài cách khai báo, khởi chế tạo chuỗi
Chúng ta xét lấy một ví dụ sau:
// e.g about string - code by nguyenvanquan7826#include int main() // khai bao chuoi co toi da 50 ky tu char name<50>; printf("Hi, What is your name? My name is: "); gets(name); printf("Hi %s, welcome khổng lồ C language ", name); // khoi tao chuoi ngay trong khi khai bao char myLove<> = "Nguyen Thi Lap Lanh"; puts(myLove); return 0;Kết quả:
Hi, What is your name? My name is: Nguyen Van quan liêu Hi Nguyen Van Quan, welcome khổng lồ C language Nguyen Thi Lap Lanh
Trong công tác trên, mình bao gồm dùng hàm puts để in chuỗi myLove ra, đó cũng là hàm để xuất chuỗi.
Như trên bạn cũng có thể thấy là khai báo chuỗi tiếp đến nhập chuỗi hoặc vừa khai báo vừa gán giá trị đến chuỗi ngay. Tuy nhiên bọn họ không thể khai báo tiếp nối mới gán quý giá như sau:
char name<50>;name = "Nguyen Van Quan"; // errorTrong trường ý muốn khai báo tiếp đến mới gán giá bán trị, bọn họ phải sử dụng hàm copy chuỗi strcpy phía trong thư viện string.h nhằm lưu cực hiếm như sau:
// e.g about string - code by nguyenvanquan7826#include #include int main() char name<50>; strcpy(name, "Nguyen Van Quan"); puts(name); return 0;
3. Một vài ví dụ về chuỗi cam kết tự vào C
3.1 lấy một ví dụ 1: Đếm số từ trong chuỗi
Hãy nhập vào một chuỗi ký kết tự với đếm số từ trong chuỗi. VD chuỗi “Nguyen Van Quan” bao gồm 3 từ.Để làm bài này, họ thấy từng từ là các ký tự thường xuyên nhau với phân tách các trường đoản cú bằng những dấu cách. Do thế bài này đã quy về đếm số dấu bí quyết trong chuỗi. Giả dụ chuỗi có một từ thì không tồn tại dấu cách, chuỗi bao gồm 2 từ thì có 1 dấu biện pháp giữa 2 trường đoản cú đó. Tổng quát là tất cả n từ bỏ thì sẽ có được n-1 vệt cách.
Vấn đề tiếp theo là làm sao đếm được những dấu cách? Đơn giản, như mở đầu ta sẽ biết chuỗi là một trong mảng những ký tự, bởi vì vậy bạn có thể duyệt lần lượt các ký tự của chuỗi nhằm kiếm tra ký kết tự nào là vệt cách. Nhưng ước ao duyệt hết những ký vào chuỗi (mảng ký kết tự) thì đề xuất biết con số ký tự bao gồm trong chuỗi (số lượng thành phần có trong mảng).
May mắn là trong tủ sách string.h chúng ta có một hàm để đưa độ dài của chuỗi là hàm strlen. (str – string, len – length).
// e.g about string - code by nguyenvanquan7826#include #include // for strlen functionint main() { char s<50>; printf("Enter a string: "); gets(s); int i, count = 0; // count - bien dem so luong dau cach for (i = 0; i Code khá đối kháng giản, các bạn đọc, đọc và demo nhé.
Tuy nhiên code trên bọn họ có một số trong những lưu ý:
Do chuỗi là 1 trong những mảng những ký tự, nên muốn lấy ký kết tự đồ vật i trong chuỗi s thì ta truy vấn như với mảng là s.Ví dụ này chỉ áp dụng khi chuỗi có độ dài lớn hơn 0 và không tồn tại dấu white thừa ở đầu, cuối hoặc giữa những từ.Như vòng lặp for sinh sống trên, họ có đk i , tuy nhiên bản chất của hàm strlen là một trong những vòng lặp nữa nhằm đếm con số ký từ của chuỗi s. Buộc phải nếu chúng ta viết trực tiếp điều kiện như trên thì trong mỗi lần lặp, chương trình lại đề nghị chạy lại lệnh strlen lặp để đếm số lượng ký tự của s. Điều này là thừa cùng làm chương trình chạy lâu hơn. Bởi vậy chúng ta sẽ đặt 1 biến đổi là độ dài của chuỗi ra phía bên ngoài như sau:int len = strlen(s);for (i = 0; i
3.2 lấy ví dụ 2: chuẩn hóa chuỗi
Hãy nhập vào một trong những chuỗi với xóa bỏ toàn bộ các dấu biện pháp thừa nghỉ ngơi đầu, cuối cùng giữa những từ trường hợp có.Xem thêm: Cách Up Video Lên Youtube Hd Lên Youtube Bằng Máy Tính, Điện Thoại
Bài toán này là bài bác toán đặc biệt quan trọng cho các phần mềm, về sau khi lưu lại trữ, nhập liệu cần xem xét để tài liệu được chuẩn, không thừa thiếu tạo sai sót trong quy trình xử lý cùng tím kiếm.
Ký tự thứ nhất của chuỗi s là dấu bí quyết thì s<0> là dấu cách, bọn họ xóa nó là xong.Các cam kết tự phương pháp giữa những từ giả dụ thừa có nghĩa là s cùng s thuộc là lốt cách. Chúng ta xóa 1 trong 2 là ok, vì các từ sẽ phân bóc tách nhau vị 1 dấu cách bắt buộc ta yêu cầu dữ lại 1 dấu cách.Các ký tự ngơi nghỉ cuối chuỗi là dấu giải pháp thì bọn họ sẽ xóa bằng cách gán cam kết tự cuối cùng là ký tự rỗng " " là xong. Lưu giữ rằng ký tự cuối cùng của mảng n phần tử là aVấn đề tiếp theo sau là làm sao xóa 1 cam kết tự vào chuỗi? các bạn nhìn lại lấy ví dụ như trên họ có sử dụng hàm copy chuỗi, cùng để xóa 1 hoặc một số trong những ký tự trong chuỗi chúng ta sẽ sử dụng hàm này tuy thế sẽ cần sử dụng theo copy địa chỉ.
Để xóa từ ký tự i đến ký kết tự j vào chuỗi s, bọn họ dùng lệnh strcpy(&s, &s
// e.g about string - code by nguyenvanquan7826#include #include int main() { char s<50>; printf("Enter a string: "); gets(s); // delete all space at start of string while( s<0> == ' ' ) strcpy(&s<0>, &s<1>); // delete all space at over of string while( s< strlen(s)-1 > == ' ') s< strlen(s)-1 > = '