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)
88
1
"Segmentasyon hatası" erişiminiz olmayan belleğe erişmeye çalıştığınız anlamına gelir.
İlk sorun
main
argümanlarınızla ilgilidir. mainfonksiyonu
int main(int argc, char *argv[])şeklinde olmalıdır ve
argv[1]ye erişmeden önce
argc`nin en az 2 olup olmadığını kontrol etmelisiniz.Ayrıca,
printf
e birfloat
aktardığınız için (bu arada,printf
e aktarılırkendouble
a 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.