我想在几秒钟内输入用户输入,输入是几分钟。如果我输入0.1,这应该是6秒,因为0.1分钟是6秒。
然而,由于某种原因,我的代码导致零。
int main(int argc, char *argv[]) {
if (argc != 6) {
printf("Not enough arguments!\n");
exit(1);
}
double sim_time, chance, time_served, sample_time;
int num_tellers;
sim_time = atoi(argv[1]) * 60; //These are in minute units
chance = atoi(argv[2]);
num_tellers = atoi(argv[3]);
time_served = atoi(argv[4]) * 60;
sample_time = atoi(argv[5]) * 60;
以下是命令行输入:./a.out 10 2 3 4 0.1
因此我期望sample_time
为6,但它是0.这可能是非常愚蠢的东西,但我无法弄明白。
感谢任何帮助。
答案 0 :(得分:2)
atoi()
的签名是
int atoi(const char *nptr);
它将返回int
值,而不是float
或double
。在您的情况下,输入0.1
将返回为0
。
如果您想要float
值,请尝试atof()
。
注意:作为建议,最好在直接使用NULL
之前检查argv[n]
。
答案 1 :(得分:2)
当对浮动/ 加倍采取行动时,请使用atof()
代替atoi()
。
atoi()
返回整数
atof()
返回 double
关于评论,用于实施目的:
double atof(const char * str);
如果有人不知道...... double
和float
之间的差异是精确的。