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;
}
文章来源: https://blog.51cto.com/coderusher/5568906
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报