在C语言中,字符串是以‘\0’结尾的,这一原因也导致了字符串相关操作比较繁琐,比如字符串拼接,只能通过调用函数来得以实现,没有整型相关计算便捷。但是为了更好的理解这些字符串函数的本质,我们可以自己编写一些程序,让自己能够更透彻的理解字符串相关操作。毕竟有些事情,如果我们改变不了,尝试着去适应也是一种积极的生活态度!
编写的字符串相关函数有:1、my_strcpy (字符串拷贝)
2、my_strcat (字符串拼接)
3、my_strstr (判断是否为子串)
4、my_strchr (查找字符串中首次出现字符的位置)
5、my_strcmp(字符串比较)
#include <stdio.h>
#include <windows.h>
#include <assert.h>
char *my_strcpy(char *src, const char*str)
{
assert(str);
assert(src);
char *ret = src;
while (*src=*str)
{
src++;
str++;
}
return ret;
}
char *my_strcat(char *src1,const char *str)
{
assert(str);
char *ret = src1;
while (*src1)
{
src1++;
}
while(*src1=*str)
{
src1++;
str++;
}
return ret;
}
char * my_strstr(char *str,char *src2)
{
char *p = NULL;
while (*str)
{
p = src2;
while (*src2 && *str && (*src2==*str))
{
src2++;
str++;
}
if (*src2 == '\0')
{
return p;
src2++;
}
}
}
int my_strchr(char *str,char * src3)
{
while (*str)
{
if (*str == *src3)
{
return (str - src3);
break;
}
else
{
str++;
}
}
}
int my_strcmp(char *str, char *src4)
{
int ret = 0;
while (!(ret=(*str-*src4)&&*src4))
{
++str, ++src4;
if (ret <0)
{
ret=-1;
}
else if (ret>0)
{
ret=1;
}
return (ret);
}
}
int main()
{
char *str = "abcdefg";
char src[20];
my_strcpy(src,str);
printf("strcpy: %s\n", src);
char src1[15] = {"higklmn"};
printf("strcat: %s\n", my_strcat(src1, str));
char *src2 = "abcd";
printf("strstr: %s\n",my_strstr(str, src2));
char *src3 = "f";
printf("strchr: %c %d\n",*src3,my_strchr(str,src3));
char *src4 = "wbcw";
printf("strcmp: %d\n",my_strcmp(str,src4));
system("pause");
return 0;
}
136

被折叠的 条评论
为什么被折叠?



