自己的几个字符串操作函数,上次用库函数吃亏了,在老师指导下,写几个

#include 
   
   
    
    

int my_strlen(const char *str);
int my_strcmp(const char *str1, const char *str2);
char *my_strcpy(char *dest, const char *src);
char *my_strcat(char *dest, const char *src);

int main (int argc, char *argv[])
{
	char str1[30] = "abcdek";
	char str2[30] = "abcdefkjf";
//	printf("%d\n",my_strcmp(str1,str2));
//	printf("%s\n",my_strcpy(str1,str2));
	printf("%s\n",my_strcat(str1,str2));
	return 0;
}

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

int my_strlen(const char *str)
{
	int count = 0;
	while(*str++)
	{
		count++;
	}
	return count;
}

char *my_strcpy(char *dest, const char *src)
{
	char *p = dest;
	while(*dest++ = *src++)
		;
	return p;
}

char *my_strcat(char *dest, const char *src)
{
	char *p = dest;
	while(*dest)
		dest++;
	while(*dest++ = *src++)
		;
	return p;
}

   
   
当然可以。你可以创建一个简单的C语言函数,名为`string_concat`,它接受两个`char`类型的指针作为输入参数,并返回一个新的指向组合后的字符串的指针。这个函数会逐个字符地复制第一个字符串到第二个字符串之后,最后添加一个终止符'\0'来表示字符串结束。 ```c #include <stdio.h> #include <stdlib.h> // 用于动态内存分配 // 定义函数,合并两个字符串并返回结果字符串的地址 char* string_concat(char* str1, char* str2) { int len1 = strlen(str1); int len2 = strlen(str2); // 计算新字符串的总长度 int total_len = len1 + len2 + 1; // 加一是因为需要额外的空间存放'\0' // 动态分配足够的空间存储新字符串 char* result = (char*)malloc(total_len * sizeof(char)); if (!result) { // 检查内存分配是否成功 printf("Memory allocation failed.\n"); return NULL; } // 将str1复制到新字符串 memcpy(result, str1, len1); // 使用memcpy避免逐个字符复制 // 将'\0'添加到str1的结尾,然后拷贝str2 result[len1] = '\0'; // 结束str1 memcpy(&result[len1+1], str2, len2); // 复制str2 result[len1+len2] = '\0'; // 结束str2 return result; } int main() { char str1[] = "Hello, "; char str2[] = "world!"; char* combined_str = string_concat(str1, str2); if (combined_str != NULL) { printf("Combined string: %s\n", combined_str); free(combined_str); // 释放内存 } return 0; } ``` 在这个例子中,`main`函数展示了如何使用`string_concat`来连接两个字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值