Fehler beim Schreiben von strcat () mit Zeigern

Ich versuche mit C zu lernenThe C programming Language by K&R. Ich versuche das zu schreibenstrcat() Programm mit Zeigern.

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;
}

Aber ich bekomme die Ausgabe als

stack overflow
Segmentation fault

Warum funktioniert es nicht? Kann hier jemand den Fehler klären ..

Antworten auf die Frage(4)

Ihre Antwort auf die Frage