Guys,
Helping my son with a simple little area program, I am running into a
segmentation fault after program execution. It seems to be with the strtod
conversion, but I can't figure out why. It compiles without issue and executes
fine, but then I get a Segmentation Fault error after the program ends. The code is:
#include
#include
#include
int main (int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "\nERROR: Usage: %s radius list\n", argv[0]);
fprintf(stderr, "\n example: %s 4 16 21 8 for area calculations\n\n",
argv[0]);
exit (1);
}
char *p;
int i;
double rad;
double area;
for (i=1;i<=argc;i++) {
rad = strtod(argv[i],&p);
area = M_PI*rad*rad;
printf(" rad : %5.2f area : %10.4f\n", rad, area);
}
return 0;
}
It compiles without error on 11.4 (x86_64) with:
gcc -Wall ztst.c -o ztst
It seems to run fine:
13:22 alchemy:~/dev/prg/ccpp/src-c/misc> ./ztst 1 2 3 4
rad : 1.00 area : 3.1416
rad : 2.00 area : 12.5664
rad : 3.00 area : 28.2743
rad : 4.00 area : 50.2655
Segmentation fault
So where is this segfault coming from? I have experimented and commented out
of the strtod function and just hard coded values for rad (i.e.: rad = (double)
i;) and it runs without a segfault. Am I doing something wrong with the strtod
call? What say the experts?
--
David C. Rankin, J.D.,P.E.
--
To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org
To contact the owner, e-mail: opensuse+owner@opensuse.org