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

  • 我们来讲一讲: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 );其他的都是一样。

相关推荐

  1. C语言——字符函数字符串函数

    2024-03-24 08:24:01       18 阅读
  2. 【C语言】字符函数字符串函数

    2024-03-24 08:24:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 08:24:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 08:24:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 08:24:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 08:24:01       18 阅读

热门阅读

  1. JVM学习

    JVM学习

    2024-03-24 08:24:01      16 阅读
  2. 【测试思考】设计测试用例时,你在想什么

    2024-03-24 08:24:01       17 阅读
  3. Electron IPC通信机制深度解析与实例演示

    2024-03-24 08:24:01       16 阅读
  4. 如何系统地自学 Python?

    2024-03-24 08:24:01       14 阅读
  5. 学习资料记录

    2024-03-24 08:24:01       16 阅读
  6. 20 有效的括号

    2024-03-24 08:24:01       17 阅读
  7. 机器翻译评价指标 BLEU分数

    2024-03-24 08:24:01       21 阅读
  8. Day31 贪心算法

    2024-03-24 08:24:01       17 阅读
  9. Ubuntu 22.04 安装配置时间同步服务器

    2024-03-24 08:24:01       19 阅读
  10. Eureka和Nacos的关系

    2024-03-24 08:24:01       17 阅读
  11. Python学习笔记06

    2024-03-24 08:24:01       16 阅读
  12. B3626 跳跃机器人

    2024-03-24 08:24:01       21 阅读