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

THDC - Bai II.06 pps

37 846 0
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ả Nguyễn Thị Thu Trang
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Lập Trình Bằng Ngôn Ngữ C
Thể loại Bài giảng
Định dạng
Số trang 37
Dung lượng 1,52 MB

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

Nội dung

scanf“%s”,str; //không cần &str.Nếu người dùng nhập một xâu có dấu cách thì chỉ phần ký tự nằm trước dấu cách đầu tiên được nhập cho xâu ký tự vd: trong ví dụ trên, nếu nhập xâu “Viet N

Trang 1

TIN HỌC ĐẠI CƯƠNG

PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C

BÀI 6: XÂU KÝ TỰ

KHOA C¤NG NGHÖ

INFORMATION TECHNOLOGY

Trang 2

BÀI 6: XÂU KÝ TỰ

6.1 Khái niệm xâu ký tự

6.2 Khai báo và sử dụng xâu

6.3 Một số hàm làm việc với ký tự và xâu ký tự trong C.

6.3.1 Các hàm xử lý ký tự

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

6.3.3 Một số hàm xử lý xâu ký tự khác

6.3.4 Con trỏ và xâu ký tự

Trang 3

6.1 Khái niệm xâu ký tự

Là một dãy các kí tự viết liên tiếp

nhau.

Xâu rỗng: Xâu không gồm kí tự nào cả.

Độ dài xâu: Số kí tự có trong xâu.

Ví dụ:

“Tin hoc” là một xâu kí tự gồm 7 kí tự:

‘T’, ‘i’, ‘n’, dấu cách (‘ ‘), ‘h’, ‘o’,

và ‘c’

Lưu trữ xâu ký tự:

Ký tự kết thúc xâu: NULL hoặc ’\0’.

Trang 4

BÀI 6: XÂU KÝ TỰ

6.1 Khái niệm xâu ký tự

6.2 Khai báo và sử dụng xâu

6.3 Một số hàm làm việc với ký tự và xâu ký tự trong C.

6.3.1 Các hàm xử lý ký tự

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

6.3.3 Một số hàm xử lý xâu ký tự khác

6.3.4 Con trỏ và xâu ký tự

Trang 5

6.2.1 Khai báo xâu ký tự

Cú pháp:

char ten_xau [so_ky_tu_toi_da];

Ví dụ:

char ho_va_ten[20];

Trang 6

6.2.1 Khai báo xâu ký tự (2)

char s[15] = “Truong DHBK”; /*trinh dich tu them \0

vao cuoi xau */

char s[] = “Truong DHBK”;/* trinh dich tu tinh chieu dai xau = 12 */

Trang 7

6.2.2 Truy cập vào một phần tử của xâu

Trang 8

scanf(“%s”,str); //không cần &str.

Nếu người dùng nhập một xâu có dấu cách thì chỉ phần ký tự nằm trước dấu cách đầu tiên được nhập cho xâu ký tự (vd: trong ví dụ trên, nếu

nhập xâu “Viet Nam” rồi gõ Enter thì s = “Viet” Phần còn lại được đẩy vào

bộ đệm).

Sử dụng gets

Cú pháp: gets(s);

Nhập được cả xâu ký tự có dấu cách.

Xuất xâu ra màn hình: printf(“%s”,str) hoặc puts(str)

Trang 9

6.2.3 Nhập/xuất xâu ký tự - gets() & printf()

/* Minh hoa cach su dung gets() & printf() */

Trang 10

6.2.3 Nhập/xuất xâu ký tự - scanf() & puts()

/* Minh hoa cach su dung scanf() & puts() */

#include <stdio.h>

char ho[81], ten[81];

int count, soTheSV;

void main() {

puts(“Hay nhap ho, ten va so the SV cach nhau boi"); puts(" dau cach roi go Enter ");

count = scanf("%s%s%d", ho, ten, &soTheSV);

printf("%d muc vua nhap: %s %s %d \n", count, ho,

ten, soTheSV);

getch();

}

Trang 11

BÀI 6: XÂU KÝ TỰ

6.1 Khái niệm xâu ký tự

6.2 Khai báo và sử dụng xâu

6.3 Một số hàm làm việc với ký tự và xâu ký tự trong C.

6.3.1 Các hàm xử lý ký tự

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

6.3.3 Một số hàm xử lý xâu ký tự khác

6.3.4 Con trỏ và xâu ký tự

Trang 12

6.3.1 Các hàm xử lý ký tự

Để sử dụng các hàm này ta khai báo

tệp tiêu đề ctype.h.

int toupper(int ch)

Chuyển một kí tự chữ cái thường (các kí tự 'a', 'b', …, 'z')

thành kí tự chữ cái hoa tương ứng ('A', 'B', …, 'Z')

int tolower(int ch)

Chuyển một kí tự chữ cái hoa ('A', 'B', …, 'Z') thành kí tự chữ

cái thường tương ứng ('a', 'b', …'z')

int isalpha(int ch)

Kiểm tra một kí tự có phải là chữ cái hay không ('a', 'b', …,

'z', 'A', 'B', …, 'Z')

Hàm trả về giá trị khác không nếu đúng là chữ cái, trả về giá

trị 0 nếu ngược lại

Trang 13

6.3.1 Các hàm xử lý ký tự (tiếp)

int isdigit(int ch)

Kiểm tra một kí tự có phải là chữ số hay không

('0', '1', …'9')

Hàm trả về giá trị khác không nếu đúng, trả về

giá trị 0 nếu ngược lại

int islower(int ch)

Kiểm tra một kí tự có phải là chữ cái thường hay

không ('a', 'b', …'z')

Hàm trả về giá trị khác không nếu đúng, trả về

giá trị 0 nếu ngược lại.

int isupper(int ch)

Kiểm tra một kí tự có phải là chữ cái hoa hay

không ('A', 'B', …'Z').

Hàm trả về giá trị khác không nếu đúng, trả về

giá trị 0 nếu ngược lại

Trang 14

6.3.1 Các hàm xử lý ký tự (tiếp)

int iscntrl(int ch)

Kiểm tra một kí tự có phải là kí tự điều

khiển hay không (là các kí tự không hiển thị được và có mã ASCII từ 0 đến 31).

Hàm trả về giá trị khác không nếu đúng, trả

về giá trị 0 nếu ngược lại.

int isspace(int ch)

Kiểm tra một kí tự có phải là dấu cách

(space, mã ASCII là 32), kí tự xuống dòng

('\n', mã ASCII là 10), kí tự về đầu dòng

('\r', mã ASCII là 13), dấu tab ngang ('\t',

mã ASCII là 9) hay dấu tab dọc ('\v', mã

ASCII là 11) hay không.

Hàm trả về giá trị khác không nếu đúng, trả

về giá trị 0 nếu ngược lại

Trang 15

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

Vào ra dữ liệu

liệu cho xâu và hiển thị dữ liệu chứa trong

xâu.

scanf(“%s”, ten_xau);

gets(ten_xau);

printf(“%s”, ten_xau);

puts(ten_xau);

Trang 16

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

Ví dụ: Nhập vào một chuỗi và hiển

thị trên màn hình chuỗi vừa nhập

printf("Nhap chuoi: "); gets(ten);

printf("Chuoi vua nhap: "); puts(ten);

getch();

return 0;

}

Trang 17

6.3.3 Một số hàm xử lý xâu ký tự khác

size_t strlen(char* tên_xâu);

tên_xâu.

char* strcpy(char* xâu_đích, char* xâu_nguồn)

int strcmp(char* xâu_thứ_nhất, char*

xâu_thứ_hai);

giá trị < 0 nếu xâu_thứ_nhất nhỏ hơn xâu_thứ_hai giá trị 0 nếu xâu_thứ_nhất bằng xâu_thứ_hai

giá trị > 0 nếu xâu_ thứ _nhất lớn hơn xâu_thứ_hai

char* strcat(char* xâu_đích, char* xâu_nguồn);

2 xâu xâu_nguồn và xâu_đích

Trang 18

6.3.3 Một số hàm xử lý xâu ký tự khác

char* strchr(char* str, int ch);

con trỏ trỏ tới kí tự ch đầu tiên trong str, ngược

lại nó sẽ trả về con trỏ NULL.

char* strstr(char* str1, char* str2);

con trỏ trỏ tới kí tự đầu tiên của xâu con str2 đầu

tiên trong str1, ngược lại nó sẽ trả về con trỏ

NULL.

int atoi(char* str)

thành số nguyên tương ứng.

số nguyên chuyển đổi được, ngược lại trả về giá trị

0

Trang 19

6.2.4 Thư viện <string.h>

Thư viện <string.h> chứa các hàm xử lý xâu

ký tự:

strlen(s): hàm trả về độ dài của xâu s.

strcpy(s1,s2): sao chép xâu s2 sang xâu s1.

Lưu ý: Không được gán s=“Hello” mà phải dùng strcpy.

strcat(s1,s2): nối xâu s2 vào cuối xâu s1.

Trang 20

6.3.4 Con trỏ và xâu ký tự

Xâu là một mảng một chiều có kiểu ký

tự

xâu thông qua một con trỏ.

Trang 22

Kiểm tra tính đối xứng

#include <stdio.h>

#include <conio.h>

#include <string.h>

void main() {

char chuoi[125]; int i = 0, j;

printf("\nNhap vao chuoi kiem tra : ");

Trang 23

Kiểm tra tính đối xứng

Sửa chương trình thành hàm doiXung

Trả về 0 nếu không đối xứng

Trả về 1 nếu đối xứng

Nguyên mẫu: int doiXung(char*);

Trang 25

int doiXung(char *chuoi)

Trang 26

6.2.4 Thư viện <string.h> - So sánh, nối xâu

void main() {

char chuoi1[125], chuoi2[125]; int kq;

printf("\nNhap vao chuoi 1: "); gets(chuoi1);

printf("\nNhap vao chuoi 2: "); gets(chuoi2);

kq = strcmp(chuoi1, chuoi2);

if (kq==0)

printf(“Chuoi 1 bang chuoi 2 \n");

else

printf(“Chuoi 1 khong bang chuoi 2 \n”);

printf(“Chuoi 2 ghep voi chuoi 2 la: %s”,

strcat(chuoi1,chuoi2));

getch();

}

Trang 27

Bài tập

Viết chương trình đổi ngược một xâu từ chữ hoa

thành chữ thường và ngược lại

Trang 28

Đổi ngược chữ hoa chữ thường

/* Doi nguoc chu hoa chu thuong */

Trang 29

Đổi ngược chữ hoa chữ thường (2)

Trang 30

Đổi ngược chữ hoa chữ thường (3)

Sửa chương trình thành hàm doiNguoc

Trả về một xâu đổi ngược chữ hoa

chữ thường

Trang 31

char chuoi[125], *chuoikq;

printf("\nNhap vao chuoi goc: ");

Trang 32

char *doiNguoc(char *chuoi)

Trang 33

Bài tập

Viết hàm catKyTuTrongThua

Mục đích: Cắt các ký tự trống thừa trong chuỗi: Đầu, cuối và giữa

(nếu có 2 ký tự trắng liền nhau)

Nguyên mẫu:

char *catKyTuTrongThua(char*)

Viết hàm main() để nhập một xâu, gọi hàm trên để

cắt các ký tự trống thừa, sau đó hiển thị kết quả

sau khi cắt.

Trang 35

(s[i]==' ' && s[i+1]!= ' ')

&& k!=0 && i != strlen(s)-1)) kq[k++]= s[i];

Trang 37

Câu hỏi?

Ngày đăng: 30/07/2014, 01:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w