C语言,四种字符串操作,用c语言实现源码

strcat()函数

char *strcat(char *dest, const char *src)

把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。它返回一个指向字符串dest首地址的指针。
下面的函数,实现strcat函数。

char* my_strcat(char* str1, const char* str2)
{
	char *ret = str1;
	while(*str1 != '\0')
	{
		str1++;
	}
	while(*str1++ = *str2++)
	{
		;
	}
	*str1 = '\0';
	return ret;
}
char dest[50]="Who are you?", src[50]="I am Jack";
strcat(dest, src);
printf("%s\n", dest);
//Who are you?I am Jack

strchr()函数

char *strchr(const char *str, int c) 

在参数 str 所指向的字符串中搜索第一次出现字符 c(一个无符号字符)的位置。该函数返回在字符串 str 中第一次出现字符 c 的位置,如果未找到该字符则返回 NULL。它的声明如下:

char* my_strchr(const char* str, int c) {
	for (; *str != '\0'; ++str) {
		if (*str == c) {
			return str;
		}
	}
	return NULL;
}
    char str[50]="I am Jack";
    char ch = 'a';
    char *addr = strchr(str, ch);
    printf("找到:%c\n",*addr);

strcmp()函数

int strcmp(const char *str1, const char *str2) 

把 str1 所指向的字符串和 str2 所指向的字符串进行比较。如果str1>str2则返回值>0,如果str1<str2则返回值>0,如果str1=str2则返回值=0。它的声明如下:

其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
① str1小于str2,返回负值或者-1(VC返回-1);
② str1等于str2,返回0;
③ str1大于str2,返回正值或者1(VC返回1);

int my_strcmp(const char* str1, const char* str2)
{
	while ((*str1) && (*str1 == *str2))
	{
		str1++;
		str2++;
	}
	if (*(unsigned char*)str1 > *(unsigned char*)str2)
	{
		return 1;
	}
	else if (*(unsigned char*)str1 < *(unsigned char*)str2)
	{
		return -1;
	}
	else
	{
		return 0;
	}  
}

*(unsigned char*)str1是指 str1这个地址对应的内容。

char str1[15]="abcde";
char str2[15]="ABCDE";
int ret;
ret = strcmp(str1, str2);
if (ret < 0)
{
    printf("str1 小于 str2");
}
else if (ret > 0)
{
    printf("str2 小于 str1");
}
else
{
    printf("str1 等于 str2");
}

strcpy()函数

char *strcpy(char *dest, const char *src) 

把 src 所指向的字符串复制到 dest。其返回指向dest的指针。

char * my_strcpy(char * dst,const char * src){
    if((NULL == dst)||(NULL == src)){
          return NULL;
    }
    char *ret = dst;
    while((*dst++ = *src++)!='\0');
    return ret;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值