字符函数和字符串函数(下)

  • 我们来讲一讲:strcpy,strcat,strcmp它们的头文件都是<string.h>的内容,
  • 首先,先讲一讲strcpy的使用和如何模拟实现strcpy,strcpy它的返回类型为:char* strcpy(char * destination, const char * source );是char*类型,亦是指针类型。

strcpy的使用,代码为:

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "nihaoshijie";
	char arr1[20] = " ";
	strcpy(arr1, arr);//这个的意思就是:将arr中的值给arr1:
	printf("%s\n", arr1);

	return 0;
}

它所要实现的就是arr的值copy给arr1。则必须要包含的头文件是<string.h>.

模拟实现strcpy:它所要实现的内容,则必须要用到函数的知识,才能解决。先写出主函数,要包含创建一个函数,则代码为:

void my_str(char* dest,char* str)
{
	while (*str != '\0')
	{
		//拷贝\0前面的内容
		*dest = *str;
		dest++;
		str++;
	}
	*dest = *str;//拷贝\0
}
int main()
{
	char arr[] = "nihaoshijie";
	char arr1[20] = " ";
	my_str(arr1, arr);//这个的意思就是:将arr中的值给arr1:
	printf("%s\n", arr1);

	return 0;
}

代码分析:这个代码中的my_str就是一个自定义函数,前面所说的strcpy的返回类型,贼这个代码中的void my_str(char* dest,char* str)就它的返回类型dest所对应的就是主函数中的arr,同理str就是所对应主函数的arr1。其实函数部分所对应的图可以理解成这样:它们就是一一对应的关系。

其实对于strcat与strcmp都是也一样的,在这里我们就不一一介绍了,就直接上代码,来的就简单。

strcat的使用:用来连接字符串 则代码为:

int main()
{

	char ar[20] = "ni hao";
	char ar1[] = "shi jie";
	strcat(ar, ar1);//ar是目的地,ar1是追加的字符串
	printf("%s\n", ar);
	return 0;
}

模拟实现strcat的代码为:

#include<assert.h>
char* cat_str(char* dest,char* str)
{
	assert(dest && str);//断言一下dest和str不是NULL,
	                    //必须包含头文件为<assert.h>
	char ret = dest;
	while (dest != '\0')
		dest++;
	//拷贝
	while (*dest++ = *str++)
		return ret;	
}
int main()
{

	char ar[20] = "ni hao";
	char ar1[] = "shi jie";
	cat_str(ar, ar1);//ar是目的地,ar1是追加的字符串
	printf("%s\n", ar);
	return 0;
}

如果觉得char* dest,char* str不是很稳定,可以在char前加上const,这样就能固定dest和str的值。

strcmp的使用,用来两个字符串比较大小 则代码为:

//因为strcmp的返回类型是int,所以,它所打印的就是整形类型。

int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "cdef";
	int ret = strcmp(arr1, arr2);
	printf("%d\n", ret);

	return 0;
}

模拟实现strcmp,它的代码是:

int str_cmp(const char* str1,const char* str2)
{
	assert(str1 && str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;
		str1++;
		str2;
	}
	if (*str1 > str2)
	{
		return 1;
	}
	else
	{
		return -1;
	}
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "cdef";
	int ret = str_cmp(arr1, arr2);
	printf("%d\n", ret);
	return 0;
}

这就是这三个字符串的函数,但是这个比较不稳定,如果想要三者都有限制,则需要strncpy,strncmp,strncat这三个带有限制的字符串函数,它们的返回类型,只需要在其()内加上size_t  num(无符号数字即可)就可以,它的返回类型为:char * strncpy ( char * destination, const char * source, size_t num );其他的都是一样。

上一篇:git学习笔记


下一篇:【计算机网络】常见面试题汇总-2.HTTP