Segmentasyon hatası (çekirdek boşaltıldı) nedir?

Linux'ta argümanın sqrt'sine sahip bir C programı yazmaya çalışıyorum, İşte kod:

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

Girdimi "shell> " komut istemine yazdıktan sonra, gcc bana aşağıdaki hatayı veriyor:

Segmentation fault (core dumped)
Çözüm

"Segmentasyon hatası" erişiminiz olmayan belleğe erişmeye çalıştığınız anlamına gelir.

İlk sorun main argümanlarınızla ilgilidir. mainfonksiyonuint main(int argc, char *argv[])şeklinde olmalıdır veargv[1]ye erişmeden önceargc`nin en az 2 olup olmadığını kontrol etmelisiniz.

Ayrıca, printfe bir float aktardığınız için (bu arada, printfe aktarılırken doublea dönüştürülür), %f biçim belirtecini kullanmalısınız. %sbiçim belirteci dizeler ('\0'` sonlandırılmış karakter dizileri) içindir.

Yorumlar (3)