Saya mencoba untuk menulis program C di linux yang memiliki sqrt argumen, di Sini's kode:
#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;
}
Setelah saya ketik saya input di "shell> " prompt, gcc memberi saya kesalahan berikut:
Segmentation fault (core dumped)
"kesalahan Segmentasi" berarti bahwa anda mencoba untuk mengakses memori yang anda tidak memiliki akses ke.
Masalah pertama adalah dengan argumen anda dari utama
. Utama
harus int main(int argc, char *argv[])
, dan anda harus memeriksa bahwa argc
setidaknya 2 sebelum mengakses argv[1]
.
Juga, karena anda're lewat di float
untuk printf
(yang, by the way, akan dikonversi ke double
ketika melewati printf
), anda harus menggunakan %f
format specifier. The %s
format specifier untuk string ('\0'
-diakhiri karakter array).