无法打印功能返回的字符串

时间:2019-09-02 23:38:15

标签: c

当我尝试使用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打印一个空字符串

1 个答案:

答案 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);
}