¿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)
88
1
"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ónmain
debería serint main(int argc, char *argv[])
, y deberías comprobar queargc
es al menos 2 antes de acceder aargv[1]
.Además, como estás pasando un
float
aprintf
(que, por cierto, se convierte en undouble
al pasarlo aprintf
), deberías usar el especificador de formato%f
. El especificador de formato%s
es para cadenas (matrices de caracteres terminadas en'0'
).