Bài giảng Ngôn ngữ lập trình C - Chương 7: Chuỗi ký tự
Số trang: 10
Loại file: pdf
Dung lượng: 90.49 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Sau khi học xong chương 7 Chuỗi ký tự thuộc bài giảng Ngôn ngữ lập trình C học viên có kiến thức về chuỗi ký tự, khởi tạo chuỗi, hàm nhập chuỗi, hàm xuất chuỗi, các hàm thao tác chuỗi và khái niệm stdin ngoài ra trong bài giảng có ví dụ minh họa giúp sinh viên tiếp thu bài học nhanh hơn.
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C - Chương 7: Chuỗi ký tựCHƯƠNG 7: CHUỖI KÝ TỰNội dung Chuỗi ký tự Khởi tạo chuỗi Hàm nhập chuỗi Hàm xuất chuỗi Các hàm thao tác chuỗi Khái niệm stdin Chuỗi ký tự• Chuỗi ký tự được xem như là mảng các phần tử có kiểu char. Ngoài ra ký hiệu kết thúc chuỗi được quy ước là ‘ ’ (ký tự có mã ASCII là 0) đặt ở cuối chuỗi. Như vậy một mãng ký tự gồm n phần tử sẽ lưu được một chuỗi tối đa n-1 ký tự.• Ví dụ 1:• char s[31];• s là mảng ký tự lưu được một chuỗi tối đa 30 ký tự Khởi tạo chuỗi• Ví dụ 2:• char s[10] = “Hello”;• khi đó s[0] = ‘H’, s[1] = ‘e’, s[2] = ‘l’, s[3] = ‘l’, s[4] = ‘o’, s[5] = ‘ ’ (kết thúc chuỗi). Chuỗi s chứa được tối đa 9 ký tự.• Cũng có thể dùng con trỏ kiểu char để khởi tạo một chuỗi. Khi đó trình biên dịch sẽ cấp phát một vùng nhớ đủ để lưu chuỗi bao gồm cả ký tự kết thúc chuỗi.• Ví dụ 3:• char *name = “John Smith”;• khi đó biến con trỏ name sẽ trỏ đến vùng nhớ gồm 11 byte có nội dung là chuỗi nói trên được tự động ghép thêm một ký tự ‘ ’ (ký hiệu kết thúc chuỗi). Hàm nhập chuỗi char *gets(char *s);• Ví dụ 4:• void main()• {• char name[31];• printf(“Cho biet ten cua ban:”);• gets(name);• printf(“Chao bạn %s ”, name);• getch();• }• Chú ý: Không nên sử dụng hàm scanf() để nhập chuỗi vì hàm scanf nhận vào dữ liệu cho đến khi gặp khoảng trắng thì kết thúc. Hàm xuất chuỗi int *puts(char *s);• Ví dụ 5:• void main()• {• char name[31];• printf(“Cho biet ten cua ban:”);• gets(name);• puts(name); /*xuất chuỗi ra màn hình và chuyển con trỏ xuống đầu dòng tiếp theo*/• getch();• } Các hàm thao tác chuỗi• Các hàm sau được định nghĩa trong tập tin tiêu đề string.h int strlen(char *s);• Trả về độ dài chuỗi ký tự s. char *strcat(char *dest, char *src);• Ghép chuỗi src vào chuỗi dest và trả về con trỏ đến chuỗi dest. Chuỗi dest phải có đủ chỗ (kể cả ký tự kết thúc chuỗi) để ghép thêm src vào. char *strcpy(char *dest, char *src);• chép chuỗi src chồng lên chuỗi dest và trả về con trỏ đến chuỗi dest. Chuỗi dest phải có đủ chỗ (kể cả ký tự kết thúc chuỗi) để chép src vào . int strcmp(char *s1, char *s2);• Trả về giá trị âm nếu s1 nhỏ hơn s2; trả về 0 nếu s1 bằng s2; trả về giá trị dương nếu s1 lớn hơn s2. char *strchr(char *s, char c);• Tìm xem ký tự c có nằm trong chuỗi s hay không. Nếu có, hàm trả về con trỏ đến vị trí đầu tiên của chuỗi s mà chứa ký tự c; nếu không hàm trả về NULL. char *strstr(char *s1, char *s2);• Xác định xem chuỗi s2 có là chuỗi con của chuỗi s1 hay không. Nếu có, hàm trả về con trỏ đến vị trí đầu tiên của chuỗi s1 mà chứa nội dung chuỗi ký tự s2; nếu không hàm trả về NULL.• Ví dụ 6:• void main()• {• char *string = “Borland International”,• char *substring = “nation”;• char *blank = “ “, *c = “C++”, *turbo = “Turbo”;• char *str1 = “aaa”, *str2 = “aab”;• char ch = ‘r’;• char destination[25];• char *ptr;• int result;• printf(“%d ”, strlen(string));• strcpy(destination, turbo);• strcat(destination, blank);• strcat(destination, c);• printf(“%s ”, destination);• result = strcmp(str2, str1);• if(result > 0)• printf(“str2 is greater than str1 ”);• else• printf(“str2 is less than str1 ”);• strcpy(string, “This is a string”);• ptr = strchr(string, ch);• if(ptr != NULL)• printf(“The character %c is at position %d ”, ch, ptr– string);• else• printf(“The character was not found ”);• ptr = strstr(string, substring);• printf(“The substring is: %s ”, ptr);• } Khái niệm stdin• stdin là dòng vào chuẩn (bàn phím). Khi dữ liệu nhập từ bàn phím theo các lệnh scanf, gets, getchar, … thì trước hết chúng được đưa vào stdin, sau đó lần lượt gán cho các biến, nếu còn thì vẫn lưu lại cho các lệnh nhập sau. Muốn xóa sạch stdin phải dùng lệnh fflush(stdin).• Ví dụ 6:• void main()• {• int tuoi; char ten[31];• printf(“Nhap tuôi:”);• scanf(“%d”, &tuoi);• printf(“Nhap ten:”);• fflush(stdin); //xóa sạch stdin• gets(ten);• } ...
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C - Chương 7: Chuỗi ký tựCHƯƠNG 7: CHUỖI KÝ TỰNội dung Chuỗi ký tự Khởi tạo chuỗi Hàm nhập chuỗi Hàm xuất chuỗi Các hàm thao tác chuỗi Khái niệm stdin Chuỗi ký tự• Chuỗi ký tự được xem như là mảng các phần tử có kiểu char. Ngoài ra ký hiệu kết thúc chuỗi được quy ước là ‘ ’ (ký tự có mã ASCII là 0) đặt ở cuối chuỗi. Như vậy một mãng ký tự gồm n phần tử sẽ lưu được một chuỗi tối đa n-1 ký tự.• Ví dụ 1:• char s[31];• s là mảng ký tự lưu được một chuỗi tối đa 30 ký tự Khởi tạo chuỗi• Ví dụ 2:• char s[10] = “Hello”;• khi đó s[0] = ‘H’, s[1] = ‘e’, s[2] = ‘l’, s[3] = ‘l’, s[4] = ‘o’, s[5] = ‘ ’ (kết thúc chuỗi). Chuỗi s chứa được tối đa 9 ký tự.• Cũng có thể dùng con trỏ kiểu char để khởi tạo một chuỗi. Khi đó trình biên dịch sẽ cấp phát một vùng nhớ đủ để lưu chuỗi bao gồm cả ký tự kết thúc chuỗi.• Ví dụ 3:• char *name = “John Smith”;• khi đó biến con trỏ name sẽ trỏ đến vùng nhớ gồm 11 byte có nội dung là chuỗi nói trên được tự động ghép thêm một ký tự ‘ ’ (ký hiệu kết thúc chuỗi). Hàm nhập chuỗi char *gets(char *s);• Ví dụ 4:• void main()• {• char name[31];• printf(“Cho biet ten cua ban:”);• gets(name);• printf(“Chao bạn %s ”, name);• getch();• }• Chú ý: Không nên sử dụng hàm scanf() để nhập chuỗi vì hàm scanf nhận vào dữ liệu cho đến khi gặp khoảng trắng thì kết thúc. Hàm xuất chuỗi int *puts(char *s);• Ví dụ 5:• void main()• {• char name[31];• printf(“Cho biet ten cua ban:”);• gets(name);• puts(name); /*xuất chuỗi ra màn hình và chuyển con trỏ xuống đầu dòng tiếp theo*/• getch();• } Các hàm thao tác chuỗi• Các hàm sau được định nghĩa trong tập tin tiêu đề string.h int strlen(char *s);• Trả về độ dài chuỗi ký tự s. char *strcat(char *dest, char *src);• Ghép chuỗi src vào chuỗi dest và trả về con trỏ đến chuỗi dest. Chuỗi dest phải có đủ chỗ (kể cả ký tự kết thúc chuỗi) để ghép thêm src vào. char *strcpy(char *dest, char *src);• chép chuỗi src chồng lên chuỗi dest và trả về con trỏ đến chuỗi dest. Chuỗi dest phải có đủ chỗ (kể cả ký tự kết thúc chuỗi) để chép src vào . int strcmp(char *s1, char *s2);• Trả về giá trị âm nếu s1 nhỏ hơn s2; trả về 0 nếu s1 bằng s2; trả về giá trị dương nếu s1 lớn hơn s2. char *strchr(char *s, char c);• Tìm xem ký tự c có nằm trong chuỗi s hay không. Nếu có, hàm trả về con trỏ đến vị trí đầu tiên của chuỗi s mà chứa ký tự c; nếu không hàm trả về NULL. char *strstr(char *s1, char *s2);• Xác định xem chuỗi s2 có là chuỗi con của chuỗi s1 hay không. Nếu có, hàm trả về con trỏ đến vị trí đầu tiên của chuỗi s1 mà chứa nội dung chuỗi ký tự s2; nếu không hàm trả về NULL.• Ví dụ 6:• void main()• {• char *string = “Borland International”,• char *substring = “nation”;• char *blank = “ “, *c = “C++”, *turbo = “Turbo”;• char *str1 = “aaa”, *str2 = “aab”;• char ch = ‘r’;• char destination[25];• char *ptr;• int result;• printf(“%d ”, strlen(string));• strcpy(destination, turbo);• strcat(destination, blank);• strcat(destination, c);• printf(“%s ”, destination);• result = strcmp(str2, str1);• if(result > 0)• printf(“str2 is greater than str1 ”);• else• printf(“str2 is less than str1 ”);• strcpy(string, “This is a string”);• ptr = strchr(string, ch);• if(ptr != NULL)• printf(“The character %c is at position %d ”, ch, ptr– string);• else• printf(“The character was not found ”);• ptr = strstr(string, substring);• printf(“The substring is: %s ”, ptr);• } Khái niệm stdin• stdin là dòng vào chuẩn (bàn phím). Khi dữ liệu nhập từ bàn phím theo các lệnh scanf, gets, getchar, … thì trước hết chúng được đưa vào stdin, sau đó lần lượt gán cho các biến, nếu còn thì vẫn lưu lại cho các lệnh nhập sau. Muốn xóa sạch stdin phải dùng lệnh fflush(stdin).• Ví dụ 6:• void main()• {• int tuoi; char ten[31];• printf(“Nhap tuôi:”);• scanf(“%d”, &tuoi);• printf(“Nhap ten:”);• fflush(stdin); //xóa sạch stdin• gets(ten);• } ...
Tìm kiếm theo từ khóa liên quan:
Chuỗi ký tự Hàm xuất chuỗi Hàm nhập chuỗi Thao tác chuỗi Ngôn ngữ lập trình Học lập trình C Ngôn ngữ lập trình C Kỹ thuật lập trình CGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 275 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 265 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 265 0 0 -
114 trang 240 2 0
-
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 225 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 217 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 207 0 0 -
101 trang 200 1 0
-
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 184 0 0