以下のコードでは (実行時に) (セグメンテーション違反) エラーが発生するため、ポインターのみを使用して連結を実現するにはどうすればよいですか?
#include <stdio.h>
#include <string.h>
int main()
{
char *s1="Front";
char *s2="Back";
char *s3=strcat(s1,s2);
puts(s3);
return 0;
}
文字列リテラルに書き込もうとしているからです。この行char *s1 = "Front";
は、書き込みができない文字列定数を指しています。
に変更するchar s1[20] = "Front";
と、14 文字を超えない限り、期待どおりに動作するはずです。
strcat
リテラル文字列 ( や など"Front"
)は変更できないことに注意し"Back"
てください。
次のように、結果用のスペースが必要です。
#include <stdio.h>
#include <string.h>
int main()
{
char *s1="Front";
char *s2="Back";
char s3[80];
s3[0] = '\0';
strcat(s3,s1);
strcat(s3,s2);
puts(s3);
return 0;
}