好的,所以我做了这个程序来帮助我完成我的作业,因为我想提高我的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);
}
答案 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