Eu estou tentando escrever um programa em C no linux que tendo sqrt do argumento, Aqui's o 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;
}
Depois de digitar minha entrada no "shell> " prompt, o gcc me dá o seguinte erro:
Segmentation fault (core dumped)
"Segmentation fault" significa que você tentou acessar a memória que não tem acesso.
O primeiro problema é com os seus argumentos de main
. A função main
deve ser int main(int argc, char *argv[])
, e você deve verificar se o argc
é pelo menos 2 antes de acessar o argv[1]
.
Além disso, como você'está passando em um float
para printf
(que, por sinal, é convertido para um double
ao passar para printf
), você deve utilizar o especificador de formato %f
. O especificador de formato %s' é para strings (
'\0'`terminated character arrays').