您的位置:首页 > 编程语言 > C语言/C++

C语言字符串相关方法的实现

2015-03-27 14:33 405 查看
int my_strlen(const char *str);
char * my_strcpy(char *dest,const char *src);
char * my_strcat(char *dest,const char *src);
int my_strcmp(const char *dest,const char *src);
const char* my_strchr(const char *str,int ch);
const char* my_strstr(const char *str,const char *substr);


int my_strlen(const char *str)
{
const char *eos=str;
while (*eos++);
return ((int)(eos-str-1));
}
char * my_strcpy(char *dest,const char *src)
{
char *eos=dest;
while (*dest++=*src++);
return eos;
}
char * my_strcat(char *dest,const char *src)
{
char *eos=dest;
while (*dest)
dest++;
while (*dest++=*src++);
return eos;
}
int my_strcmp(const char *dest,const char *src)
{
int res=0;
while (!(res=*dest-*src)&&*dest)
dest++,src++;
/*
while (*dest) //dest没有到字符串结尾时,继续循环
{
res=*dest-*src;
if (res!=0) //如果字符不相等跳出循环,结果已经明确,没必要在比较下去了
{
break;
}
dest++;src++;
}*/
return res;
}
const char* my_strchr(const char *str,int ch)
{
while (*str!=ch&&*str)
str++;
if (*str==ch)
return str;
return 0;
}
const char* my_strstr(const char *str,const char *substr)
{
const char *p=str;
const char *s1,*s2;
if (!*substr)
return str;
while (*p)
{
s1=p;
s2=substr;
while (*s1&&*s2&&!(*s1-*s2))//str和substr没有结束并且,str和substr相等时才循环
s1++,s2++;
if (!*s2)
return p;
p++;
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include "mystring.h"
int main()
{
char *str="itcastsd";
char arr[]="hda,fd.dsa fe\rew]gff";
char *delim=",. \]";
char *result;
//printf("%d\n",my_strlen("Hello"));
//printf("%s\n",my_strcpy(dest,src));
//printf("%s\n",my_strcat(dest,src));
//printf("%d\n",my_strcmp("hglo","hflo"));
//printf("%s\n",my_strstr(str,"ca"));
/******strtok使用******/
result=strtok(arr,delim);
printf("%s\n",result);
while (result=strtok(NULL,delim))
{
printf("%s\n",result);
}
/************/
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息