当我尝试使用printf打印目标字符串时,它什么也没显示,我不明白问题出在哪里。
char *ft_strcpy(char *dest, char *src)
{
while (*src)
{
*dest = *src;
src++;
dest++;
}
*dest = '\0';
return (dest);
}
void main(void) {
char s1[25];
char s2[]="test";
printf("%s",ft_strcpy(s1, s2));
}
目标包含复制的字符串,但printf打印一个空字符串
答案 0 :(得分:2)
您正在更改dest指针所指向的位置,最后的操作是将0放在dest的末尾,然后返回指向该0的指针(空白字符串)。
要么在开始时获取dest的副本,要么根本不更改dest,而是引入一个新的指针。例如,引入dest的副本:-
char *ft_strcpy(char *dest, char *src)
{
char* orig_dest = dest; // this takes a copy of where dest originally pointing to.
while (*src)
{
*dest = *src
src++;
dest++; // this is changing where dest points to...
}
*dest = '\0'; // this means dest points at a blank string...
return (orig_dest);
}