Ik probeer een C-programma in Linux te schrijven dat SQRT van het argument heeft, hier is de code:
#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;
}
Nadat ik mijn invoer in de “Shell & GT;” -prompt typen, geeft GCC me de volgende fout:
Segmentation fault (core dumped)
Antwoord 1, Autoriteit 100%
“Segmentation Fault” betekent dat u probeerde toegang te krijgen tot het geheugen dat u geen toegang hebt tot.
Het eerste probleem is met uw argumenten van main
. De main
Functie moet int main(int argc, char *argv[])
zijn, en u moet controleren of argc
minimaal 2 eerder is Toegang tot argv[1]
.
Ook, aangezien u een float
overgeven aan printf
(die trouwens, wordt geconverteerd naar een double
wanneer u doorgaat Naar printf
), moet u de %f
–formaatspecificator gebruiken. De %s
Formaat Specificator is voor snaren ('\0'
-TERMINATISCHE KARAKTERRIREES).