strcmp
int mystrcmp(char *str1,char *str2)
{
while(*str1 == *str2 && *str1){
str1++;
str2++;
}
if(*str1>*str2){
return 1;
}else if(*str1<*str2){
return -1;
}else
return 0;
}
strchr
char *mystrchr(char *str,char c)
{
if(str == NULL){
return NULL;
}
while(*str != c && *str != '\0'){
str++;
}
if(*str == c){
return str;
}else
return NULL; //未找到该字符则返回 NULL。
}
strstr
char *mystrstr(char *src,char *sub)
{
char *p1 = NULL;
char *p2 = NULL;
if(src ==NULL || sub == NULL){
return NULL;
}
//判断src与sub的有效性
while (*src != '\0')
{
p1 = src; //用于src的遍历
p2 = sub; //用于sub的遍历
//每次src+1,然后与sub依次比较
while (*p1 == *p2)
{
if (*p2 == '\0')
{
//找到了
return src;
}
p1++;
p2++;
}
src++;
}
return NULL;
}
strupr
char *mystrupr(char *str)
{
char *p = str;
if(p == NULL){
return NULL;
}
while(*p != '\0'){
if(*p>='a' && *p<='z'){
*p -= 32;
}
p++;
}
return str;
}
strlwr
char *mystrlwr(char *str)
{
char *p = str;
if(p == NULL){
return NULL;
}
while(*p != '\0'){
if(*p>='A' && *p<='Z'){
*p += 32;
}
p++;
}
return str;
}
strtok
char *mystrtok(char *str,char *delim)
{
char *next_str = NULL;
char *p1 = str;
char *p2 = NULL;
while(*p1){
p2 = delim; //每次比较都遍历下
while(*p2 ){
if(*p1 == *p2){
next_str = p1+1; //做标记
if(p1 == str){ //第一个就是分隔符
str = next_str;
break;
}
*p1 = '\0'; //字符串以'\0'结尾,在相同字符处赋值用来分割
return str;
}
p2++;
}
p1++;
}
return NULL;
}
mystrtok有漏洞。