1

でCを学ぼうとしていThe C programming Language by K&Rます。strcat()ポインターを使用してプログラムを作成しようとしています。

char *strcat (char *s, char *t){
    char *d;
    d = s;
    while(*s++);
    s--;
    while(*s++ = *t++);
    return d;
}

int main () {
    char *name1;
    char *name2;
    name1 = "stack" ;
    name2 = "overflow";
    printf("%s %s\n", name1, name2);
    printf("strcat out : %s", strcat(name1, name2));
    return 0;
}

しかし、私は次のように出力を得ています

stack overflow
Segmentation fault

なぜ機能しないのですか?誰でもここで間違いを明確にすることができます..

4

4 に答える 4

0
 char *name1;
 char *name2;
 name1 = "stack" ;
 name2 = "overflow";

==>

 char name1[20];
 char name2[10];
 memcpy(name1,"stack") ;
 memcpy(name2,"overflow");
于 2013-08-31T16:13:35.180 に答える