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)
"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 bir float
aktardığınız için (bu arada, printf
e aktarılırken double
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.