回 帖 发 新 帖 刷新版面

主题:接受命令行参数,回显与输入不符

#include <stdio.h>

int main(int argc,char *argv[])
{
    FILE *in;
    float a,b,c;

    in=fopen(argv[1],"r");
    a=(float)*argv[2];
    b=(float)*argv[3];
    c=(float)*argv[4];
    printf("%f\t%f\t%f\n",a,b,c);

    return 0;
}
mts@ubuntu-unity:~$ ./test tmp 5.08610000 5.08610000 21.01083999
53.000000        53.000000        50.000000

问题出在哪里?

谢谢。


回复列表 (共2个回复)

沙发

命令行参数test tmp 5.08610000 5.08610000 21.01083999,是以字符串形式存储的,例如*argv[2]字符串5.08610000中的字符5,ascll为53,故输出之。

板凳

修改为:
char* p;
a = (float)strtod(argv[2], &p);
b = (float)strtod(argv[3], &p);
c = (float)strtod(argv[4], &p);

其中strtod是把字符串转为double类型的浮点数。得到double浮点数之后再转化为float类型。

我来回复

您尚未登录,请登录后再回复。点此登录或注册