1. Trang chủ
  2. » Công Nghệ Thông Tin

LTC- Xâu kí tự

26 870 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xâu ký tự
Tác giả Ts Ngô Hữu Phúc
Trường học Học viện Kỹ thuật quân sự
Chuyên ngành Khoa học máy tính
Thể loại Bài học
Định dạng
Số trang 26
Dung lượng 722,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LTC- Xâu kí tự

Trang 1

Biên soạn: TS Ngô Hữu Phúc

Bộ môn Khoa học máy tính Học viện Kỹ thuật quân sự

Xâu ký tự

CHƯƠNG 8

Trang 2

Nội dung bài học

Trang 3

8.1 Các biến và hằng kiểu xâu kí tự.

 Trong C, xâu ký tự được cài đặt như là mảng của các ký tự , được kết thúc bởi ký tự NULL (‘\0’).

Các biến xâu kí tự được sử dụng để lưu trữ một dãy các ký tự

 Như các biến khác, các biến này phải được khai báo trước khi sử dụng

 Ví dụ khai báo một biến xâu kí tự:

char str[10];

str là một mảng các ký tự, nó có thể lưu tối đa 10 ký tự

Giả sử str được gán một hằng xâu kí tự: “WELL DONE”

Một hằng xâu kí tự là một dãy các ký tự nằm trong dấu nháy kép Mỗi ký

tự trong một xâu kí tự được lưu trữ như là một phần tử của mảng

Trang 4

8.1 Các biến và hằng kiểu xâu kí tự (t)

 Trong bộ nhớ, xâu kí tự được lưu trữ như sau:

 Đối với kiểu hằng hoặc thông qua lệnh nhập, ký tự ‘\0’ (null) được tự động thêm vào trong cách biểu diễn bên trong của xâu kí tự để đánh dấu điểm kết thúc xâu kí tự

 Do đó, khi khai báo một xâu kí tự, phải tăng kích thước của xâu thêm một phần tử để chứa kí hiệu kết thúc NULL.

Trang 5

pstr là một con trỏ được khởi tạo để trỏ đến một hằng xâu kí tự

Con trỏ pa lưu địa chỉ của xâu a.

 Các con trỏ trên có thể thay đổi để trỏ đến bất kì một xâu kí tự nào khác.

Trang 6

8.1.2 Các thao tác nhập xuất xâu kí tự

 Các thao tác nhập/xuất xâu kí tự trong C được thực hiện

bằng cách gọi các hàm chuẩn

 Các hàm chuẩn được khai báo trong:

#include <stdio.h>;

 Một số hàm chuẩn cho xâu ký tự:

 Hàm char * gets (char *s);

 Hàm int puts (const char *s);

 Hàm scanf() với định dạng xâu ký tự.

 Hàm printf() với định dạng xâu ký tự.

Trang 7

8.1.2 1 Các thao tác nhập/xuất xâu kí tự đơn giản

Nhập đơn giản:

Hàm được sử dụng gets().

Cú pháp: char * gets (char *s);

Ý nghĩa:

 Nhập một xâu ký tự thông qua thiết bị nhập chuẩn

 Các ký tự sẽ được nhập vào cho đến khi nhấn phím Enter

 Hàm gets() thay thế ký tự kết thúc trở về đầu dòng ‘\n’ bằng ký tự ‘\0’

Trong đó s là một mảng ký tự đã được khai báo.

 Chú ý: Cần giải phóng bộ đệm khi nhập xâu ký tự bằng hàm: fflush(stdin).

Xuất đơn giản:

Hàm được sử dụng: puts().

Cú pháp: int puts (const char *s);

Ý nghĩa:

 Hiển thị một xâu kí tự ra thiết bị xuất chuẩn

Trong đó s là một mảng ký tự đã được khai báo và khởi tạo.

Trang 8

Ví dụ:

Nhập xâu

kí tự và hiển thị lên màn hình

Nguyen Van A

Trang 9

8.1.2 2 Các thao tác Nhập/Xuất xâu kí tự có định dạng

 Vì hàm này là hàm tổng hợp, khi nhập xâu ký tự, không nhập dấu cách

 Định dạng %s cho biết rằng một giá trị xâu ký tự sẽ được nhập vào,

str là một mảng ký tự đã được khai báo

Xuất có định dạng:

 Sử dụng hàm: printf(…);

Cú pháp: printf(“%s”,str);

Ý nghĩa:

 Hiện một xâu ký tự lên màn hình

 Định dạng %s cho biết rằng một giá trị xâu kí tự sẽ được hiển thị

 str là một mảng ký tự đã được khai báo và khởi tạo

Trang 10

Ví dụ về

sử dụng hàm

scanf

và printf với xâu

Trang 11

8.2 Các hàm xử lý xâu kí tự

 Trong C, hỗ trợ rất nhiều hàm về xâu kí tự

 Các hàm này được định nghĩa trong thư viện string.h

 Một số thao tác mà các hàm này thực hiện là:

 Nối xâu kí tự.

 So sánh xâu kí tự.

 Định vị một ký tự trong xâu kí tự.

 Sao chép một xâu kí tự sang xâu kí tự khác.

 Xác định chiều dài của xâu kí tự.

 …

Trang 12

 2 xâu destsrc đã được khai báo và khởi tạo.

 Hàm này sẽ thực hiện nối xâu kí tự scr vào sau xâu kí tự

dest

 Hàm này cũng trả về con trỏ tới xâu đã nối.

Trang 13

Ví dụ

về nối xâu

NguyenAnh // xâu kết quả

Trang 14

 Hàm này so sánh 2 xâu ký tự và trả về số nguyên là kết quả so sánh.

 2 xâu s1 và s2 đã được khai báo và khởi tạo

 Giá trị trả về có nghĩa:

trả về giá trị nhỏ hơn 0, s1<s2.

trả về 0, s1=s2.

trả về lớn hơn 0, s1>s2.

Trang 15

Ví dụ về

sử dụng strcmp

char name1[20] = "Nguyen Van A";

char name2[20] = "Tran Van B";

char name3[20] = "Le Van C";

char name4[20] = "Nguyen Van A";

int i;

i = strcmp(name1,name2);

printf("%s so sanh voi %s , tra

ve %d\n", name1, name2, i);

i=strcmp(name1, name3);

printf("%s so sanh voi %s , tra

ve %d\n", name1, name3, i);

i=strcmp(name1,name4);

printf("%s so sanh voi %s , tra

ve %d\n", name1, name4, i);

Trang 16

Hàm strchr() xác định vị trí xuất hiện của một ký tự trong một xâu kí tự

Trong đó str là một mảng ký tự hay con trỏ kí tự

chr là một biến int chứa mã ASCII của ký tự cần tìm

Hàm trả về con trỏ trỏ đến giá trị tìm được đầu tiên trong xâu kí tự, hoặc NULL

nếu không tìm thấy

Trang 17

Ví dụ:

Chương trình sau đây xác định liệu ký tự

hiện trong tên hai thành phố hay không?

char str1[15] = "Ho Chi Minh";

char str2[15] = "Ha Noi";

char chr = 'a', *location;

Trang 18

8.2.4 Copy xâu ký tự

được phép gán để sao chép giá trị giữa 2 xâu.

Cú pháp:

char * strcpy(char *dest, const char *src);

 Hàm sao chép giá trị scr vào dest và trả về xâu kí tự dest.

 dest và scr là hai mảng ký tự đã được khai báo và khởi tạo

Trang 19

char hotelname1[15] = "Hoa Hong";

char hotelname2[15] = "Hoa Mai";

printf("Ten cu cua khach san: %s\n", hotelname1);

Trang 20

Hàm xác định độ dài xâu ký tự str, không kể ‘\0’

Trong đó str là mảng ký tự đã được khai báo và khởi tạo.

Trang 21

Ví dụ

sử dụng strlen

getch();

}

Trang 22

8.2.6 Một số hàm thường dùng khác trong thư

viện string.h

được thực hiện từ trái sang phải), nếu không trả về NULL

ch trong s (việc tìm được thực hiện từ phải sang trái), nếu không trả về NULL.

dương nếu s1 > s2

s1 == s2, dương nếu s1 > s2, so sánh trên n ký tự.

thường

Trang 23

8.2.6 Một số hàm thường dùng khác trong thư viện string.h (t)

int strcspn(char* s1, char* s2) : trả về độ dài đoạn đầu tiên lớn nhất cúa s1 mà mọi kí tự của đoạn không có mặt trong chuỗi s2.

int strspn(char* s1, char* s2): trả về độ dài đoạn đầu tiên dài

nhất mà hai xâu s1 và s2 giống nhau.

char* strdup(char* s): cấp phát vùng nhớ gấp đôi chuỗi s, nếu không được trả về NULL

int stricmp(char* s1, char* s2): giống strcmpi.

int strlen(char* s): trả về độ dài xâu.

char* strlwr(char* s): chuyển chữ hoa thành chữ thường

char* strncat(char* s1, char* s2, int n): ghép n kí tự đầu của chuỗi s2 vào chuỗi s1.

Trang 24

8.2.6 Một số hàm thường dùng khác trong thư viện string.h (t)

s1, nếu không trả về NULL

không trả về NULL

Trang 25

Ví dụ

Nhập vào một xâu ký

tự Tách xâu này thành các từ, ngăn cách với nhau bởi dấu

“Nguyen “ Van

“Nguyen “ Nam

Trang 26

Ví dụ:

Nhập vào n tên người, đưa ra những người họ nguyễn

Ngày đăng: 05/11/2012, 14:54

Xem thêm

TỪ KHÓA LIÊN QUAN

w