这里介绍将strlen strcpy strncpy strset strnset strcat strncat strrev strlwr strupr strchr strrchr strcmp等。
这是在main函数里面实现的http://blog.csdn.net/qq_35256722/article/details/51649612
这是在函数块实现的http://blog.csdn.net/qq_35256722/article/details/51799485
下面将在指针的条件下实现
1.strlen
int my_strlen(char *p)
{
char *tmp = p;
while(*p != 0)
{
p ++;
}
return p-tmp;
}
int main()
{
char s[]="weshb3de";
printf("%d\n",my_strlen(s));
return 0;
}
2.strcpy
void my_strcpy(char *dst,char *src)
{
while(*src != 0)
{
*dst = *src;
dst ++;
src++;
}
*dst = 0;
}
int main()
{
char s[]="d";
char s1[100];
my_strcpy(s1,s);
printf("%s\n",s1);
return 0;
}
3.strncpy
void my_strncpy(char *dst,char *src,int m)
{
char *tmp = src;
while(*src != 0)
{
if((tmp + m) <= src)
{
*dst = *src;
dst ++;
}
src++;
}
*dst = 0;
}
int main()
{
char s[]="dedrf";
char s1[100];
my_strncpy(s1,s,3);
printf("%s\n",s1);
return 0;
}
4.strset
void my_strset(char *p,char sh)
{
while(*p != 0)
{
*p =sh;
p++;
}
}
int main()
{
char s[]="hello";
char ch = '*';
my_strset(s,ch);
printf("%s\n",s);
return 0;
}
5.strnset
void my_strnset(char *p,char sh,int m)
{
char *tmp=p;
while(*p != 0)
{
if((tmp + m) <= p)
{
*p = sh;
}
p++;
}
}
int main()
{
char s[]="hello";
char ch = '*';
my_strnset(s,ch,3);
printf("%s\n",s);
return 0;
}
6.strcat
void my_strcat(char *dst,char *src)
{
while((*(dst+strlen(dst))= *src) != 0)
{
dst++;
src++;
}
}
int main ()
{
char s[100]="wws";
char s1[]="ess";
my_strcat(s,s1);
printf("%s",s);
return 0;
}
7strncat
void my_strncat(char *dst,char *src,int m)
{
char *tmp = src;
while(*src != 0)
{
if((tmp + m )<= src)
{
*(dst + strlen(dst))= *src;
dst++;
}
src++;
}
}
int main ()
{
char s[100]="wws";
char s1[]="essgbb";
my_strncat(s,s1,2);
printf("%s",s);
return 0;
}
8.strrev
void my_strrev(char *p,int m)
{
char tmp ;
char *s = (p + m-1);
while(*p !=0)
{
if(p <s)
{
tmp = *p;
*p = *s;
*s = tmp;
s --;
}
p ++;
}
}
int main ()
{
char s[]="abcdefghijklmnopqrst";
int x = strlen(s);
my_strrev(s,x);
printf("%s",s);
return 0;
}
9.strlwr
void my_strlwr(char *p)
{
while(*p != 0)
{
if(*p >= 'A'&& *p <= 'Z')
{
*p = *p +32;
}
p ++;
}
}
int main ()
{
char s[]="ASXC";
my_strlwr(s);
printf("%s",s);
return 0;
}
10.strupr
void my_strupr(char *p)
{
while(*p != 0)
{
if(*p >= 'a'&& *p <= 'z')
{
*p = *p - 32;
}
p ++;
}
}
int main ()
{
char s[]="azcdx";
my_strupr(s);
printf("%s",s);
return 0;
}
11.strchr
bool my_strchr(char *p,char m)
{
while(*p != 0)
{
if(*p == m)
{
return 1;
}
p ++;
}
return 0;
}
int main()
{
char s[]="shuhjj";
printf("%d\n",my_strchr(s,'x'));
return 0;
}
12.strrchr
bool my_strrchr(char *p,char m,int n)
{
p = (p + n-1);
while(*p != 0)
{
if(*p == m)
{
return 1;
}
p --;
}
return 0;
}
int main()
{
char s[]="shuhjj";
printf("%d\n",my_strrchr(s,'x',strlen(s)));
return 0;
}
13.strcmp
int my_strcmp(char *p,char *s)
{
while(*p != 0 || *s != 0)
{
if(*p != *s)
{
return *p - *s;
}
p ++;
s ++;
}
return 0;
}
int main()
{
char s[]="shuhjr";
char s1[]="shuhj";
printf("%d\n",my_strcmp(s,s1));
return 0;
}
ok!