これは純粋に私利私欲のためであり、宿題ではありません。
#include <stdio.h>
int main(void)
{
char* str3;
char* str1 = "Hello";
char* str2 = "World!";
while(*str1) str1++;
while(*str1++ = *str2++);
return 0;
}
私は C ポインターの理解を深めようとしています。そうすることで、2 つの文字列を連結し、結果を 3 番目の文字列に配置したいと考えています。上記の (不完全な) コードは segfault になり、その理由はわかりません。ポインタが参照する値をループして、データを別のアドレスにコピーすることはできませんか?
編集:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char* str1 = "Hello";
char* str2 = "World!";
char *str3 = malloc(strlen(str1) + strlen(str2) + 1);
while(*str1) *str3++ = *str1++;
while(*str2) *str3++ = *str2++;
puts(str3);
return 0;
}
新しい試みは上にあり、機能していませんが、修正する必要がある「明白な」項目はありますか?