¿qué es el fallo de segmentación (volcado del núcleo)?

Estoy tratando de escribir un programa en C en linux que teniendo sqrt del argumento, Here's el código:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>

int main(char *argv[]){
    float k;
    printf("this is consumer\n");
    k=(float)sqrt(atoi(argv[1]));
    printf("%s\n",k);
    return 0;
}

Después de escribir mi entrada en el "shell> " prompt, gcc me da el siguiente error:

Segmentation fault (core dumped)
Solución

"Fallo de segmentación" significa que ha intentado acceder a una memoria a la que no tiene acceso.

El primer problema es con tus argumentos de main. La función main debería ser int main(int argc, char *argv[]), y deberías comprobar que argc es al menos 2 antes de acceder a argv[1].

Además, como estás pasando un float a printf (que, por cierto, se convierte en un double al pasarlo a printf), deberías usar el especificador de formato %f. El especificador de formato %s es para cadenas (matrices de caracteres terminadas en '0').

Comentarios (3)