在C中复制字符串的确切方法是什么?

时间:2017-05-15 15:21:47

标签: c string

我正在编写自己的memcpy()函数。我正在将源字符串复制到目标。复制时,错误发生为“分段错误”。我正在使用代码块。有谁能解释为什么?我不正确地复制字符串吗?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node
{
  char info;
  struct node *next;
}mynode;


void mymemcpy(void*,const void*,size_t);

int main()
{
   char *p="sonampulkit";
   char *q=p+2;
   mymemcpy(q,p,strlen(p)+1);
   printf("\n final dest=%s ",q);
   printf("\n final src=%s ",p);
   return 0;
}

void mymemcpy(void* to,const void* from,size_t n)
{
    char *src=(char*)from;
    char *dest=(char*)to;
    printf("source=%s",src);
    printf("\ndestination=%s",dest);
    printf("\nsize=%d",n);
    int i=0;
    for(i=0;i<n;i++)
    {
       printf("\ndest=%c",*(dest+i));
       printf("\nsrc=%c",*(src+i));
       // At below line , error occurred.
       dest[i]=src[i];
    }
    return dest;
}

错误:程序收到分段错误。

1 个答案:

答案 0 :(得分:0)

char *p="sonampulkit";

p - 指向字符串文字的指针,C标准禁止更改内存:它是未定义的行为。