1. Hàm strstr()
Hàm strstr() nằm trong thư viện string.h, nó được sử dụng để kiểm tra xâu ký tự con.
Cú pháp :
char* strstr (char *s, char *t);
Tham số :
- char *s : Xâu ký tự cha
- char *t : Xâu ký tự con
Giá trị trả về : Trả về con trỏ tới vị trí xuất hiện đầu tiên của xâu t trong xâu s, hoặc trả về con trỏ NULL nếu t không xuất hiện trong s
Code :
#include "stdio.h" #include "string.h" int main(){ char s[1000] = "blog.28tech.com.vn 28tech python"; char t[1000] = "28tech"; char *res = strstr(s, t); if(res == NULL){ printf("%s khong xuat hien trong %s\n", t, s); } else{ printf("%s xuat hien trong %s\n", t, s); printf("Vi tri xuat hien dau tien : %d\n", res - s); } return 0; }
Output :
28tech xuat hien trong blog.28tech.com.vn 28tech python Vi tri xuat hien dau tien : 5
2. Xây dựng hàm strstr()
Để xây dựng hàm strstr() ta sẽ xét từng kí tự trong xâu cha với ký tự đầu tiên trong xâu con, nếu bằng nhau ta tiến hành xét các kí tự liên tiếp trong xâu cha cho tới khi hết xâu con để kết luận.
Code :
#include "stdio.h" #include "string.h" char *my_strstr(char *s, char *t){ int n1 = strlen(s), n2 = strlen(t); for(int i = 0; i < n1; i++){ if(s[i] == t[0]){ //kiem tra int check = 1; //Kiểm tra xem còn đủ n2 kí tự trong xâu s không? if(n1 - i < n2){ check = 0; } else{ for(int j = 0; j < n2; j++){ if(s[i + j] != t[j]){ check = 0; break; } } } if(check == 1){ return &s[i]; } } } return NULL; } int main(){ char s[1000] = "blog.28tech.com.vn 28tech python"; char t[1000] = "28tech"; char *res = my_strstr(s, t); if(res == NULL){ printf("%s khong xuat hien trong %s\n", t, s); } else{ printf("%s xuat hien trong %s\n", t, s); printf("Vi tri xuat hien dau tien : %d\n", res - s); } return 0; }
Output :
28tech xuat hien trong blog.28tech.com.vn 28tech python Vi tri xuat hien dau tien : 5
Video hàm trong string.h :