Изменить строковый литерал в C через указатель? [Дубликат]

Possible Duplicate:
Why do I get a segmentation fault when writing to a string?

У меня есть следующая программа:

char *s     = "abcdf";
char s1[50] = "abcdf";

s1[0] = 'Q';   // Line 1
s[0] = 'P';    // Line 2

ЗачемLine 1 работал правильно иLine 2 вызвал сбой программы?