char *strcpy(char * dest,const char * src) { While(*dest != ‘\0’) { *dest = *src; dest++; Src ++; Cnt ++; } *dest = ‘\0’; Return dest - cnt; }这个自制的strcpy有问题吗
时间: 2024-02-24 09:59:03 浏览: 84
实现strcpy
5星 · 资源好评率100%
这个自制的 `strcpy` 函数有一些问题,具体如下:
1. 函数返回类型为 `int`,而不是 `char *`,应该将 `Return dest - cnt;` 修改为 `return dest - cnt;`。
2. 函数中的变量 `Src` 和 `Cnt` 没有声明,应该改为 `src` 和 `cnt`。
3. 函数中的参数 `dest` 和 `src` 应该声明为 `const char *` 和 `char *` 类型,以避免在函数内部修改输入参数的值。
4. 函数中应该检查 `src` 和 `dest` 是否为 `NULL`,以避免出现空指针引用的问题。
5. 函数中的循环条件应该是 `while(*src != '\0')`,而不是 `while(*dest != '\0')`,否则会导致字符串没有复制完成。
6. 函数中应该在复制完字符串后,将 `dest` 的末尾设置为 `\0`,以确保字符串的完整性。
7. 函数中的 `cnt` 变量应该初始化为 0,以确保计算的偏移量是正确的。
综上所述,可以将函数修改为如下所示:
```
char *my_strcpy(char *dest, const char *src) {
if (dest == NULL || src == NULL) {
return NULL;
}
int cnt = 0;
while (*src != '\0') {
*dest = *src;
dest++;
src++;
cnt++;
}
*dest = '\0';
return dest - cnt;
}
```
阅读全文