Estoy tratando de escribir un progtwig en C en Linux que teniendo en cuenta el argumento, aquí está el código:
#include #include #include 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 indicador “shell>”, gcc me da el siguiente error:
Segmentation fault (core dumped)
“Fallo de segmentación” significa que intentó acceder a la memoria a la que no tiene acceso.
El primer problema es con tus argumentos de main
. La función main
debe ser int main(int argc, char *argv[])
, y debe verificar que argc
sea al menos 2 antes de acceder a argv[1]
.
Además, dado que está pasando un float
a printf
(que, por cierto, se convierte a double
cuando pasa a printf
), debe usar el especificador de formato %f
. El especificador de formato %s
es para cadenas (matrices de caracteres terminadas en '\0'
).