Tải bản đầy đủ (.pdf) (10 trang)

Bài giảng ngôn ngữ lập trình c chương 7 chuỗi ký tự

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (90.49 KB, 10 trang )

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à ‘\0’ (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] = ‘\0’ (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ự ‘\0’ (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\n”, 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\n”, strlen(string));






strcpy(destination, turbo);
strcat(destination, blank);
strcat(destination, c);
printf(“%s\n”, destination);







result = strcmp(str2, str1);

if(result > 0)
printf(“str2 is greater than str1\n”);
else
printf(“str2 is less than str1\n”);












strcpy(string, “This is a string”);
ptr = strchr(string, ch);
if(ptr != NULL)
printf(“The character %c is at position %d\n”, ch, ptr–
string);
else
printf(“The character was not found\n”);
ptr = strstr(string, substring);
printf(“The substring is: %s\n”, 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);
}




×