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

Bài giảng Tin học đại cương Phần 2: Bài 6 - Nguyễn Hữu Nam Dương

10 69 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 9,73 MB

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

Nội dung

Cùng tìm hiểu khái niệm về xâu ký tự; khai báo và sử dụng xâu; một số hàm làm việc với ký tự và xâu ký tự trong C được trình bày cụ thể trong Bài giảng Tin học đại cương Phần 2: Bài 6 - Xâu ký tự.

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Ự

2

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 2

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 ’ Ký tự kết thúc xâu: NULL hoặc ’\\0’ 0’.

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ự

Trang 3

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];

6

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

Cú pháp:

ten_xau[chi_so_ky_tu_can_truy_cap]

Ví dụ:

char que_quan[10] = “ “Ha noi Ha noi” ”; ;

Trang 4

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ự

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.

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')

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')

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

Trang 5

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

10

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 ('

ASCII là 32), kí tự xuống dòng ('\\n', mã ASCII là 10), n', mã ASCII là 10),

kí tự về đầu dòng ('

kí tự về đầu dòng ('\\r', mã ASCII là 13), dấu tab ngang r', mã ASCII là 13), dấu tab ngang

('

('\\t', mã ASCII là 9) hay dấu tab dọc (' t', mã ASCII là 9) hay dấu tab dọc ('\\v', mã ASCII là 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 6

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

Vào ra dữ liệu

Vào ra dữ liệu trên xâu kí tự tức là nhập dữ liệu cho

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

Khai báo thư viện <stdio.h>.

scanf() hoặc hoặc gets() gets()

scanf(“%s”, ten_xau);

gets(ten_xau);

printf() hoặc hoặc puts() puts()

printf(“%s”, ten_xau);

puts(ten_xau);

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

#include<conio.h>

#include<stdio.h>

#include<string.h>

int main()

{

char ten[12];

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

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

Trang 7

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

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

 Trả về độ dài (số kí tự có trong xâu) của xâu kí tự tên_xâu

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

 Sao chép nội dung xâu_nguồn và ghi lên xâu_đích

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

 TrảTrả vềvề

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

giá trị trị 0 0 nếu nếu xâu_thứ_nhất xâu_thứ_nhất bằng bằng xâu_thứ_hai xâu_thứ_hai

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

char*

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

 Ghépnốinối xâu_nguồnxâu_nguồn vàovào ngayngay sausauxâu_đíchxâu_đích

 KếtKết quảquả trảtrả vềvề củacủa hàmhàm strcatstrcat() () làlà xâuxâumớimới ghépghépnốinối từtừ 2 2 xâuxâu

xâu_nguồn

xâu_nguồn vàvàxâu_đíchxâu_đích

14

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

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

 Tìm kiếm vị trí của kí tự ch trong xâu str

 Nếu có kí tự ch trong str thì hàm strchr() trả về 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);

 Tìm kiếm vị trí của xâu con str2 trong xâu str1

 Nếu str2 là xâu con của str1 thì hàm strstr() trả về 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)

 Chuyển một xâu kí tự là biểu diễn của một số nguyên thành số

nguyên tương ứng

 Nếu chuyển đổi thành công, hàm atoi() trả về giá trị số nguyên

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

Trang 8

Ví dụ dụ 1 1

#include <

#include <stdio.h stdio.h> >

#include <

#include <conio.h conio.h> >

#include <

#include <string.h string.h> >

char

char xau xau[100]; [100];

int nua nua, , dai dai, ok; , ok;

void main()

{{

clrscr

clrscr(); ();

printf

printf("Hay ("Hay nhap nhap vao vao mot mot xau xau:"); :");

scanf

scanf("% ("%s",&xau s",&xau); );

dai

dai= =strlen strlen((xau xau); // ); //Chiều Chiều dài dài của của xâu xâu

nua

nua= =dai dai/2; // /2; // Một Một nửa nửa chiều chiều dài dài

15

Ví dụ dụ 1 ( 1 (tiếp tiếp))

ok=1; //mặc mặc định định là là xâu xâu đối đối xứng xứng

for(

for(int int ii=0;i< =0;i<nua;i nua;i++) ++)

if (

if (xau xau[[ii] != ] != xau xau[dai [dai 1 1 i]) i])

{ ok=0; break;}

if (ok)

if (ok) printf printf (" ("Xau Xau %s la %s la doi doi xung",xau xung",xau); );

else

else printf printf(" ("Xau Xau %s la KHONG %s la KHONG doi doi

xung",xau

xung",xau); );

Trang 9

Ví dụ dụ 2: 2:

#include <

#include <stdio.hstdio.h>>

#include <

#include <conio.hconio.h>>

#include <

#include <string.hstring.h>> // // PhaiPhai co co thuthu vienvien string.hstring.h thithi moimoi

//

// susu dung dung duocduoc caccac ham ham strcpystrcpy, , strcmpstrcmp

void main()

{{

char str1[10] = “

char str1[10] = “abcabc”;”;

char str2[10] = “def”;

clrscr

clrscr();();

printf

printf(“ str1: %s”,str1);(“ str1: %s”,str1);

printf

printf(“(“\\n str2: %s”,str2);n str2: %s”,str2);

printf(“

printf(“\\n strcmp(str1,str2) = %d”,strcmp(str1,str2));n strcmp(str1,str2) = %d”,strcmp(str1,str2));

printf

printf(“(“\\n n strcatstrcat(str1,str2) = %(str1,str2) = %s”,strcats”,strcat(str1,str2));(str1,str2));

17

Ví dụ dụ 2 ( 2 (tiếp tiếp))

printf

printf(“ (“\\n str1: %s”,str1); n str1: %s”,str1);

printf

printf(“ (“\\n str2: %s”,str2); n str2: %s”,str2);

printf

printf(“ (“\\n n strcpy strcpy(str1,str2) = % (str1,str2) = %s”,strcpy s”,strcpy(str1,str2)); (str1,str2));

printf

printf(“ (“\\n str1: %s”,str1); n str1: %s”,str1);

printf

printf(“ (“\\n str2: %s”,str2); n str2: %s”,str2);

strcpy

strcpy(str1,”ab”); (str1,”ab”);

strcpy

strcpy(str2,”abc”); (str2,”abc”);

printf

printf(“ (“\\n n strcmp strcmp(str1,str2) = % (str1,str2) = %d”,strcmp d”,strcmp(str1,str2)); (str1,str2));

getch

getch(); ();

}}

18

Trang 10

Ví dụ dụ 2 ( 2 (tiếp tiếp))

19

Câu hỏi?

Ngày đăng: 30/01/2020, 14:59

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm