字符串函数-C语言基础知识入门

学习目标:

学习字符串库函数


学习内容:

1.1字符串库函数

1.1.1 strcmp

字符串函数-C语言基础知识入门_第1张图片

 str1和str2中的内容挨个相比较,只要有一个元素比较出大小,就返回相应的值。

str1 == str2  返回  0

str1 > str2  返回 正数

str1 < str2  返回 负数

strcmp的使用例子:

字符串函数-C语言基础知识入门_第2张图片

strcmp的模拟实现: 

int my_strcmp(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 if (*str1 < *str2)
		return -1;

}

1.1.2  strlen

字符串函数-C语言基础知识入门_第3张图片

 顾名思义就是求字符串的长度,遇到   \0 结束

strlen的模拟实现:

size_t my_strlen(const char* str)
{
	assert(str);
	char* ptr = str;
	while (*str)
	{
		str++;
	}
	return str - ptr;
}
void test4()
{
	char* s = "abcdefg";
	int ret = my_strlen(s);
	printf("%d\n", ret);

}

1.1.3   strcpy

字符串函数-C语言基础知识入门_第4张图片

注意:

Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point).

源字符串必须以 '\0' 结束。

会将源字符串中的 '\0' 拷贝到目标空间。

目标空间必须足够大,以确保能存放源字符串。

目标空间必须可变。 

strcpy的模拟实现:

char* my_strcpy(char* dest, const char* src)
{
	assert(src && dest);
	char* ret = dest;
	while (*dest++ = *src++) {
		;
	}
	return ret;
}
void test5()

{
	char s[] = "abcdefg";
	char ss[20] ={0};

	my_strcpy(ss, s);

	printf("%s\n", ss);

}

  

2.1  内存函数的介绍

     2.1.1   memcpy

字符串函数-C语言基础知识入门_第5张图片


memcpy的使用:

字符串函数-C语言基础知识入门_第6张图片

 

memcpy的模拟实现:

void* my_memcpy(void* dest, const void* src, size_t count)

{
	void* ptr = dest;
	assert(dest && src);
	while (count--)
	{
		*(char*)dest = *(char*)src;
		dest = (char*)dest + 1;
		src = (char*)src + 1;
		
	}
	return ptr;
}

2.1.2  memmove

字符串函数-C语言基础知识入门_第7张图片

 memmove的使用例子:

字符串函数-C语言基础知识入门_第8张图片

 

 memmove的模拟实现:

分析:

字符串函数-C语言基础知识入门_第9张图片

 

代码模拟实现:

void* my_memmove(void* dest,const void* src,size_t size)
{
	void* ret = dest;
	if (dest < src)//从前往后
	{
		while (size--)
		{
			*(char*)dest = *(char*)src;
			dest = (char*)dest + 1;
			src = (char*)src + 1;

		}
	}
	//从后往前
	else {
		while(size--)
		*((char*)dest+size) = *((char*)src+size);

	}
	return ret;
}

学习时间:

二零二二年十月


学习产出:

  • 技术笔记 1 遍
  • CSDN 技术博客 1 篇
  • 习的 vlog 视频 1 个

你可能感兴趣的:(java,服务器,html)