Hva er segmenteringsfeil (kjerne dumpet)?

Jeg prøver å skrive et C-program i linux som har sqrt av argumentet, her er koden:

#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;
}

Etter at jeg har skrevet inn inndataene mine på " shell " " ledeteksten, gir gcc meg følgende feil:

Segmentation fault (core dumped)
Løsning

Segmenteringsfeil betyr at du prøvde å få tilgang til minne som du ikke har tilgang til.

Det første problemet er med argumentene til main. Funksjonen main skal være int main(int argc, char *argv[]), og du bør sjekke at argc er minst 2 før du får tilgang til argv[1].

Siden du sender inn en float til printf (som forresten blir konvertert til en double når den sendes til printf), bør du bruke formatangivelsen %f. Formatangivelsen %s er for strenger ('\0'-terminerte tegnsett).

Kommentarer (3)