返回

C语言学习之旅 练手小题目(一)

发布时间:2023-12-15 06:15:57 315

1.模拟实现strcpy

#include 
#include

char* my_strcpy(char* dest, const char* src)
{
	// 优化前
	//while (*src != '\0')
	//{
	//	*dest = *src;
	//	dest++;
	//	src++;
	//}
	// *dest = *src
	// 进一步完善,防止传入空指针
	assert(src != NULL);
	assert(dest != NULL);
	char* ret = dest
	//优化后
	while (*dest++ = *src++)
	{
		;
	}
	return ret
}


int main()
{
	char arr1[20] = "**********";
	char arr2[] = "hello";
	printf("%s", my_strcpy(arr1, NULL)); //链式访问
	return 0;
}

注意:加入assert 方便错误定位;加入const防止传参错位

  • const 补充

const修饰变量,这个变量被称为常变量,不能被修改,但本质上还是变量


int main()
{
	const int num = 10; //无法直接修改变量
	const int* p = # //const放在*号左边无法通过一级地址修改,但是指针变量p可以修改
	int* const p = # //放在*号右边时,用来修饰指针变量,此时指针变量不能被改变
	int n = 100;
	*p = 20;
	p = &n;

	return 0;
}

2.模拟实现my_strlen函数

//模拟实现my_strlen函数
size_t my_strlen(const char* arr)
{
	assert(arr != NULL);
	size_t count = 0;
	while (*arr != '\0')
	{
		count++;
		arr++;
	}
	return count;
}

int main()
{
	char arr[10] = "abcdefg";
	printf("%d\n", my_strlen(NULL));
	return 0;
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
三子棋的实现(12) 2023-12-15 02:54:57