Wat is segmentatiefout (kern gedumpt)? [DUPLICEER]

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 mainFunctie moet int main(int argc, char *argv[])zijn, en u moet controleren of argcminimaal 2 eerder is Toegang tot argv[1].

Ook, aangezien u een floatovergeven aan printf(die trouwens, wordt geconverteerd naar een doublewanneer u doorgaat Naar printf), moet u de %f–formaatspecificator gebruiken. De %sFormaat Specificator is voor snaren ('\0'-TERMINATISCHE KARAKTERRIREES).

Other episodes