命令行输入工作不正确

时间:2012-02-02 01:27:35

标签: c

好的,所以我做了这个程序来帮助我完成我的作业,因为我想提高我的C专业知识。当我执行“gcc file.c -lm”时,一切都编译得很好,但是当我在命令行中使用数字作为参数运行时,我的程序只返回70.0000。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>


double temp(double hour){
    double t = (3.14/12)*hour;
    double c = cos((double)t);
    double temp = 13 * c + 57;
    return temp; 
}

int main ( int argc, char *argv[]){
    double temperature = temp((double)atol(argv[0]));

    printf("%f\n", temperature);
}

2 个答案:

答案 0 :(得分:7)

argv[0]可能是您的程序名称。我希望你想要argv[1]。查看this tutorial以获得快速简便的解释。

除此之外,您是否有理由使用atol(3)并投放到double,而不是仅使用直接返回double的{​​{3}}?

答案 1 :(得分:3)

请记住,argv是用于启动程序的参数,如下所示:

/path/to/my/exec value

因此,当您访问该数组的第一个元素argv[0]时,您正在访问以下内容:

/path/to/my/exec

你真正需要的是数组的第二个元素argv[1],它应该包含这个:

value