自定义strcpy函数不返回预期的指针

时间:2014-06-14 04:44:18

标签: c

#include<stdio.h>
#include<stdlib.h>
char *str_cpy(char *, char *);
void main()
{
    char *desti= (char *)calloc(sizeof(char),10);
    char *m= (char *)calloc(sizeof(char),10);
    m = str_cpy(desti,"dhawal");
    printf("destination string is :%s\n",desti);
    printf("%s\n",m);

}

char *str_cpy(char *a,char *b)
{
    while(*b!='\0')
    {
        *a = *b;
        a++;
        b++;
    }
    *a = '\0';
    return a;
}

请解释为什么m未在此处分配desti的值?

它为第三个变量赋值,即字符串副本的结果

1 个答案:

答案 0 :(得分:6)

  1. 您有内存泄漏。
  2. desti将包含&#34; dhawal&#34;
  3. m将指向该字符串的空字符。该值与a
  4. 末尾的str_cpy相同

    为避免这种情况使用

    char *str_cpy(char *a,char *b)
    {
        char *r=a;
        while(*b!='\0')
        {
            *a = *b;
            a++;
            b++;
        }
        *a = '\0';
        return r;
    }