một phần kiến thức quang trọng liên quan đến con trỏ và chuỗi kí tự của ngành Công nghệ thông tin. Tìm và theo dõi để biết thêm nhiều tài liệu hơn nhé .Chúc các bạn IT thành công và viết code không cần fix bug nhé kk
MẢNG, CON TRỎ VÀ CHUỖI KÝ TỰ GIẢNG VIÊN TS Hà Ngọc Long MỤC TIÊU CỦA HỌC PHẦN “Giới thiệu ngơn ngữ lập trình C Tập trung giới thiệu cho sinh viên kỹ năng, kỹ thuật lập trình theo phương pháp đại” TIÊU CHUẨN ĐÁNH GIÁ SINH VIÊN Hình thức Đánh giá Điểm danh Kiểm tra máy tính Kiểm tra máy tính Thi kết thúc học phần % Điểm 10% 10% 10% 70% (Làm máy tính) Tổng cộng: 100% NỘI DUNG MƠN HỌC • Các thành phần C • Xuất nhập liệu lệnh có cấu trúc • Mảng, Con trỏ Chuỗi ký tự • Cấu trúc Hàm TÀI LIỆU HỌC TẬP • Trương Cơng Tuấn Ngơn ngữ lập trình C – Các vấn đề cốt yếu, NXB Đại học Huế, 2008 • Nguyễn Thanh Thủy Ngơn ngữ C NXB Khoa học Kỹ thuật, 1999 • Phạm Văn Ất Kỹ thuật lập trình C NXB Khoa học Kỹ thuật, 1995 Tài liệu hướng dẫn phần mềm thực hành: – Dev-C++ (IDE) – Visual Studio Code (IDE) – Videos giảng hướng dẫn thực hành Nội dung Mảng – Khái niệm, khai báo sử dụng – Thao tác thường gặp Con trỏ – – – – Khái niệm cách khai báo Toán tử địa (&), toán tử nội dung (*) Phép toán trỏ Con trỏ mảng Chuỗi (xâu) ký tự – Khái niệm – Khai báo sử dụng – Các hàm xử lý ký tự xâu ký tự Mảng (Array) Khái niệm mảng (1/2) • Trong thực tế, thường gặp đối tượng có tính chất chung – Tháng năm – Điểm trung bình sinh viên lớp • Các đối tượng nhóm lại tên • Đối tượng đặc trưng tên nhóm thứ tự nhóm – Tháng thứ năm: Tháng – Sinh viên thứ 17 lớp:… • Số thứ tự nhóm số phần tử Khái niệm mảng (2/2) • Kiểu mảng kiểu liệu gồm – Một số hữu hạn thành phần – Các thành phần có kiểu: kiểu sở kiểu thành phần • Mỗi phần tử mảng tham khảo thông qua: – Tên mảng và, – Chỉ số phần tử mảng Khai báo mảng Kiểu_dữ_liệu Tên_Mảng[Kích thước]; Kiểu_dữ_liệu: kiểu phần tử mảng (nguyên, thực, ký tự, chuỗi, mảng,…) – Tên_mảng: tên mảng – Kích_thước_mảng: số phần tử mảng Ví dụ // khai báo mảng 10 phần tử có kiểu liệu int int Mang_so_nguyen[10]; float A[10]; //⇐ Mảng 10 phần tử kiểu số thực 10 TỆP TIÊU ĐỀ string.h #include 89 Các hàm xử lý chuỗi ký tự (1/6) • Chú ý: char str[100] = “Hello world”; char * p = str; • p trỏ tới mảng ký tự/ xâu ký tự – p+6 xâu ký tự : world • Xâu ký tự, khai báo char * 90 Các hàm xử lý chuỗi ký tự (2/6) size_t strlen(char * xâu) – Trả độ dài xâu printf("%d ",strlen("Hello world")); ⇒ 11 char * strcpy(char * đích, char * nguồn) – Sao chép xâu, trả giá trị xâu nguồn char Str[20]; printf("%s ",strcpy(Str,"Hello")); ⇒ Hello printf("%s", Str); ⇒ Hello – Chú ý: Phép gán Str = “Hello” không hợp lệ 91 Các hàm xử lý chuỗi ký tự (3/6) int strcmp(char * xâu_1, char * xâu_2) – – – – So sánh hai xâu Trả giá trị hai xâu giống nhau; Giá trị < 0: xâu_1 < xâu_2 Giá trị >0: xâu_1 > xâu_2 • Ví dụ char Str[20]; strcpy(Str,“hello“); printf(“%d”, strcmp(Str,”hello”));→0 printf(“%d”, strcmp(Str,”hello!”); →-1 (!?) printf(“%d”, strcmp(Str,”Hello”); → (!?) 92 Các hàm xử lý chuỗi ký tự (4/6) char * strcat(char * xđích, char * nguồn) – Ghép nối xâu nguồn vào sau xâu đích, trả lại xâu kết • Ví dụ char Str[20]; strcpy(Str,"Hello "); printf("%s ",strcat(Str,"world")); ⇒ Hello world printf("\n%s",Str); ⇒ Hello world 93 Các hàm xử lý chuỗi ký tự (5/6) char * strchr (char * s, int c) – Trả trỏ trỏ tới vị trí xuất ký tự c s Nếu khơng có trả trỏ null strcpy(Str,"Hello world"); printf("%s ",strchr(Str,‘o')); ⇒ o world char* strstr(char * s1, char * s2) – Trả trỏ trỏ tới vị trí xuất chuỗi s2 s1 Nếu không tồn tại, trả trỏ null printf("%s ",strstr(Str,”llo”)); ⇒ llo world 94 Các hàm xử lý chuỗi ký tự (6/6) Tệp tiêu đề: stdlib.h int atoi(char * str) – Chuyển xâu kí tự thành số nguyên tương ứng – Ví dụ: atoi(“1234”) →1234 int atol(char * str) – Chuyển xâu kí tự thành số long int float atof(char * str): – Chuyển xâu kí tự thành số thực – Ví dụ: atof(“123.456E-2”) →1.23456 Thất bại hàm: trả 95 Ví dụ 1: Đảo ngược chuỗi ký tự #include #include main(){ char s[100],c; int i, n; printf("Nhap xau: ");gets(s); n =strlen(s); for(i=0;i