strstr - 查找子字符串
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strstr - 查找子字符串
char* my_strstr(const char* p1, const char* p2) {
char* s1 = NULL;
char* s2 = NULL;
char* cur = (char*)p1;
if (*p2 == '\0') {
return (char*)p1;
}
while (*cur) {
s1 = cur;
s2 = (char*)p2;
while ((*s1 == *s2) && *s2 && *s1) {
s1++;
s2++;
}
if (*s2 == '\0') {
return cur;//找到子串
}
cur++;
}
return NULL;//找不到子串
}
int main() {
char* p = "abcdef";
char* p2 = "bcd";
//查找p1中是否有p2
char* ret = strstr(p, p2);
if (ret == NULL) {
printf("子串不存在\n");
}
else {
printf("%s\n", ret);//bcdef
}
char* ret2 = my_strstr(p, p2);
if (ret2 == NULL) {
printf("子串不存在\n");
}
else {
printf("%s\n", ret2);//bcdef
}
return 0;
}
bcdef
bcdef
strtok - 分解字符串为一组字符串
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strtok - 分解字符串为一组字符串
//第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记
//strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个指向这个标记的指针。
//(strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改)
//strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置
//如果字符串中不存在更多的标记,则返回NULL指针
int main() {
char arr[] = "abc,def,ghi,jkl";
char* ret = strtok(arr, ",");
printf("%s\n", ret);//abc
ret = strtok(NULL, ",");
printf("%s\n", ret);//def
ret = strtok(NULL, ",");
printf("%s\n", ret);//ghi
ret = strtok(NULL, ",");
printf("%s\n", ret);//jkl
ret = strtok(NULL, ",");
printf("%s\n", ret);//(null)
printf("---------------------\n");
char arr2[] = "110@qq.com";
char* p1 = "@.";
char* ret2 = NULL;
for (ret2 = strtok(arr2, p1); ret2 != NULL; ret2 = strtok(NULL, p1)) {
printf("%s\n", ret2);//110 qq com
}
return 0;
}
abc
def
ghi
jkl
(null)
---------------------
110
qq
com
strerror - 返回错误信息
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//strerror - 返回错误信息
int main() {
//错误码 错误信息
//0 - No error
//1 - Operation not permitted
//2 - No such file or directory
char* str1 = strerror(0);
printf("%s\n", str1);
char* str2 = strerror(1);
printf("%s\n", str2);
char* str3 = strerror(2);
printf("%s\n", str3);
return 0;
}
No error
Operation not permitted
No such file or directory