1

以下のコードでは (実行時に) (セグメンテーション違反) エラーが発生するため、ポインターのみを使用して連結を実現するにはどうすればよいですか?

#include <stdio.h>
#include <string.h>
int main()
{
    char *s1="Front";
    char *s2="Back";
    char *s3=strcat(s1,s2);
    puts(s3);
    return 0;
}
4

5 に答える 5

4

文字列リテラルに書き込もうとしているからです。この行char *s1 = "Front";は、書き込みができない文字列定数を指しています。

に変更するchar s1[20] = "Front";と、14 文字を超えない限り、期待どおりに動作するはずです。

于 2013-07-13T22:58:50.490 に答える
1

strcatリテラル文字列 ( や など"Front")は変更できないことに注意し"Back"てください。

于 2013-07-13T22:58:31.300 に答える
1

次のように、結果用のスペースが必要です。

#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;
}
于 2013-07-13T22:58:38.550 に答える