日期:2014-05-16  浏览次数:20748 次

main函数传递浮点型参数问题
请教各位大侠我想写一个程序,在程序运行时传递两个浮点型变量,例如我的程序test,运行时 ./test 3.15 3.69。
 int main(int argc, char *argv[])
 {
    double test_para;
    
    test_para = strtod(argv[1], NULL);
    
    printf("%f \n", test_par);
    printf("%s \n", argv[1]);

    return 1;
 }
发现%s打印的3.15,但是%f打印的好像是一个地址,无论穿什么参数都一样,哪位大侠能告诉我怎样才能把浮点型参数传到程序中的变量呢,不用scanf。
------解决方案--------------------
test_para = atof(argv[1]);
------解决方案--------------------
printf("%f \n", test_par);  这个test_par是楼主打错了少了一个a,还是真的另外有这么个变量?

我刚试了楼主的代码,改成test_para之后输出没有问题,说明strtod结果也是正确的。
要不楼主再用gdb看看?

------解决方案--------------------
用你的程序试了,没问题。
------解决方案--------------------
你试试下面这段代码,注意头文件。如果不包含stdlib.h的话,会出现你说的问题

#include <stdio.h>
#include <stdlib.h>
int main(int argc,char** argv) {
  double a1,a2;
  a1 = atof (argv[1]);
  a2 = atof (argv[2]);
  printf("a1=%f,a2=%f\n",a1,a2);
  return 0;
}