Falha de segmentação (núcleo despejado) em um código C simples

Eu sou novo em C. Estou me referindo ao livro "The C Programming Language", de Brian W Kernighian e Dennis Ritchie. Existe um código para o incremento de ponteiro e atribuição dado no livro da seguinte maneira.

#include<stdio.h>

int main()
    {
        char *s = "Goal";
        char *t = "Home";
        while(*s++ = *t++) printf(*s);
        return 0;
    }

O código é salvo e compilado usando o comando

gcc ptr.c -o ptr -std=c99

Agora, executando o código executando o comando

./ptr

Estou tendo o erro a seguir

falha de segmentação (despejo de núcleo)

O erro parece estar dentro dowhile condição de loop. Mas o código é exatamente o que é dado no livro. o que estou perdendo?

questionAnswers(3)

yourAnswerToTheQuestion