私は単純なstrcpyを実装しますが、それを実行すると、常にセグメンテーションエラーが発生します。 助けてください!なぜstrcpyの実装でセグメンテーションフォルトが発生するのですか?
以下は私のコードです:
#include <stdio.h>
char* mystrcpy(char *dst, char *src){
char *ptr = dst;
while (*src !='\0') {
*dst = *src;
dst++;
src++;
}
return ptr;
}
int main (int argc, char **argv) {
char *str1 = "abc";
char *str2 = "def";
char *str3 = NULL;
str3 = mystrcpy(str2, str1);
printf("str2 now is %s", str2);
printf("str3 is %s", str3);
return 0;
}
'str1'と' str2'に文字列の内容を格納するスペースがありません。 char str1 [100] = "abc" 'と' char str2 [100] = "def" 'と' char str3 [100] = "" ' – Stan
標準' strcpy'ヌルは宛先を終了します。おそらくあなたは同じことをしたいと思うでしょう。 –
このループを 'while(* src)* dst ++ = * srC++;'と書くことができるという事実は、多くの人がCの最大の強みの1つと考えています。私はそのようなコードが初心者を怖がらせるのですが、そのようなコードを多くの、長年にわたって見つめている、その緻密さは、シンプルさとして出てきて、純粋な美しさです。チャールズが言ったことにも注意してください。 'do ... while'ループが良いでしょう。 – sbi