Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/02/2010, 17:39
Avatar de genuine_carlosV2
genuine_carlosV2
 
Fecha de Ingreso: noviembre-2008
Ubicación: 127.0.0.1
Mensajes: 296
Antigüedad: 15 años, 5 meses
Puntos: 6
Respuesta: calloc y sus problemas

Ufff.... este programa está un poco bastante mal echo jeje

A ver, para almacenar un string, primero debes reservar memoria para ello, hacer esto es tener una violación de segmento asegurada:
Código C:
Ver original
  1. char *otra;
  2.  
  3. printf("Dame la frase\n\n");
  4. scanf("%s",otra);

Tienes que reservar memoria, por ejemplo: 'char otra[ 40 ];' ahora si puedes empezar a llenar el array 'otra' con caracteres (el 40 lo he puesto por poner. Reserva tanta memoria como creas).

Más cosas, en la linea 'frase=(char*) calloc(tam,sizeof(char))' le falta un punto y coma (;) final.

Si haces las cosas como te acabo de indicar, el programa funciona perfectamente.

Respondiendo a tu pregunta: Lo que te estaría sucediendo, seguramente, es que al añadir la variable 'nose', tendrías unos bytes extra para poner el texo y, por tanto, eso haría que no se produjese una violación de segmento. Sin esta variable, al escribir, estarías machacando instrucciones del programa y por eso no funcionaría. Si te interesa el tema y como solucionarlo, doy una explicación más detallada en este post.

P.D.: Para el siguiente post, por favor, usa el coloreado de sintaxis ya que así cuesta de entender el código

Saludos
__________________
Carlos

Recoger datos es solo el primer paso hacia la sabiduría. Pero compartir información es el primer paso hacia la comunidad. - IBM