私は自分のmemcpy()関数を書いています。ソース文字列を宛先にコピーしています。コピー中は、「セグメンテーションフォルト」としてエラーが発生します。私はコードブロックを使用しています。なぜ誰かが説明できますか?文字列を間違ってコピーしていますか?Cで文字列をコピーする正確な方法は何ですか?
#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;
}
エラー:プログラム受信セグメンテーションフォルト。
文字列リテラルの変更は未定義の動作です。 void mymemcpy(void *、const void *、size_t); ' –
ヒント:' char p [100] = "sonampulkit";で試してみてください。 'の代わりに 'char * p =" sonampulkit ";' –