这是strcpy代码
char *strcpy(char *dest, const char* src)
#endif
{
char *ret = dest;
while (*dest++ = *src++)
;
return ret;
}
我尝试使用swap方法和指针实现它
char *strcpy(char *dest, char *src)
{
char *ret = dest;
dest = src;
src = ret;
return ret
}
但交换方法不起作用,任何人都可以告诉我使用swap方法执行strcpy()函数是否合适?如果没有,我怎么能只使用ponters表示法编写这段代码?
答案 0 :(得分:2)
任何人都可以告诉我使用交换方法执行是否合适 strcpy()函数?
不,它不合适,因为它不是strcpy()
。我认为您最好再次阅读strcpy() man page - 其原因是它被命名为strcpy()
(这是"字符串副本的缩写")而不是swap_char_pointers()
。
如果没有,我怎么能用ponters表示法编写这段代码?
您发布的第一个strcpy()
实现仅使用指针表示法,并且工作正常。
答案 1 :(得分:1)
strcpy应该让你包含src内容。如果您更改指针本身,则不会获得副本。 您可以尝试以下方式:
int x = 0;
while (src[x] != '\0'){
dest[x] = src[x];
x++;
}
dest[x] = '\0';
您不必触摸src。请记住,dest只是字符串的地址,如果要复制,则无法更改。
答案 2 :(得分:1)
dest
和scr
是函数内的局部变量。您对它们所做的更改不会反映在外面。
此外,C中的字符串是字符数组,您不能更改数组的起始地址,它类似于常量。