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)
"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'
).