Ik probeer een C programma in linux te schrijven dat sqrt van het argument heeft, Hier's de code:
#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;
}
Nadat ik mijn invoer heb ingetypt op de "shell> " prompt, geeft gcc me de volgende foutmelding:
Segmentation fault (core dumped)
"Segmentatie fout" betekent dat u probeerde toegang te krijgen tot geheugen waartoe u geen toegang heeft.
Het eerste probleem is met je argumenten van main
. De main
functie zou int main(int argc, char *argv[])
moeten zijn, en je moet controleren dat argc
minstens 2 is voordat je argv[1]
benadert.
Ook, omdat je een float
doorgeeft aan printf
(die, tussen haakjes, wordt geconverteerd naar een double
wanneer je het doorgeeft aan printf
), moet je de %f
format specifier gebruiken. De %s
format specifier is voor strings (teken-arrays met een '¤0'
-einde).