¿Por qué este progtwig no da el resultado esperado?

Posible duplicado:
¿Por qué aparece un error de segmentación al escribir en una cadena?

int main() { char *c = "abc"; *c = 'd'; printf("%s",c); return 0; } 

Cuando intenté ejecutar este progtwig en C, el progtwig se bloquea … ¿Quiero saber cuál es el error aquí?

Debido a que la cadena literal abc se almacena realmente en un área de solo lectura del proceso y se supone que no debe modificarla. El sistema operativo ha marcado las páginas correspondientes como de solo lectura y obtienes una excepción de tiempo de ejecución para un bash de escribir allí.

Siempre que asigne un literal de cadena a un puntero de caracteres, califíquelo como const para hacer que el comstackdor le advierta sobre tales problemas:

 const char *c = "abc"; *c = 'd'; // the compiler will complain 

Si realmente desea modificar una cadena literal (aunque no directamente, sino su copia), sugeriría usar strdup :

 char *c = strdup("abc"); *c = 'd'; // c is a copy of the literal and is stored on the heap ... free(c); 

"abc" es una cadena literal.

*c = 'd' es un bash de modificar esa cadena literal.

No puedes modificar los literales de cadena.