首页 > 代码库 > C语言字符串处理函数源码
C语言字符串处理函数源码
strstr()函数源码
/*
得到s1中第一次包含s2字符串的位置指针。
*/
#include <stdlib.h>
char * my_strstr(const char *s1,const char *s2)
{
if (*s1 == 0)
{
if (*s2)
return (char *) NULL;
return (char *) s1;
}
while (*s1)
{
size_t i;
i = 0;
while (1)
{
if (s2[i] == 0)
{
return (char *) s1;
}
if (s2[i] != s1[i])
{
break;
}
i++;
}
s1++;
}
return (char *) NULL;
}
int main()
{
char *str1 = "ammana_babi";
char *str2 = "babi";
char *p;
if( (p = my_strstr(str1,str2)) == NULL)
printf("Can‘t find the string /"%s/"!/n",str2);
else
printf("Find the string /"%s/"!/n",p);
str1 = "abc";
str2 = "def";
if( (p = my_strstr(str1,str2)) == NULL)
printf("Can‘t find the string /"%s/"!/n",str2);
else
printf("Find the string /"%s/"!/n",p);
system("pause");
return 0;
}
strpbrk()函数源码
/*
得到s1中第一个且是s2中字符的位置指针。
*/
#include <stdlib.h>
char * my_strpbrk(const char *s1 ,const char *s2)
{
const char *c = s2;
if (!*s1)
return (char *) NULL;
while (*s1)
{
for (c = s2; *c; c++)
{
if (*s1 == *c)
break;
}
if (*c)
break;
s1++;
}
if (*c == ‘/0‘)
s1 = NULL;
return (char *) s1;
}
int main()
{
char *str1 = "ammana_babi";
char *str2 = "babi";
char *p;
if( (p = my_strpbrk(str1,str2)) == NULL)
printf("No same character!/n");
else
printf("%c/n",*p);
str1 = "abc";
str2 = "def";
if( (p = my_strpbrk(str1,str2)) == NULL)
printf("No same character!/n");
else
printf("%c/n",*p);
system("pause");
return 0;
}
strcspn()函数源码
/*
得到s1中第一个且是s2中字符的字符位置。
*/
int my_strcspn(const char *s1 ,const char *s2)
{
const char *s = s1;
const char *p;
while (*s1)
{
for (p = s2; *p; p++)
{
if (*s1 == *p)
break;
}
if (*p)
break;
s1++;
}
return s1 - s;
}
int main()
{
char *str1 = "ammana_babi";
char *str2 = "babi";
int offset;
if((offset = my_strcspn(str1,str2)) >= strlen(str1))
printf("Can‘t find the same character!/n");
else
printf("%c/n",*(str1 + offset));
str1 = "abc";
str2 = "def";
if((offset = my_strcspn(str1,str2)) >= strlen(str1))
printf("Can‘t find the same character!/n");
else
printf("%c/n",*(str1 + offset));
system("pause");
return 0;
}
C语言字符串处理函数源码