3

所以我正在为我的班级做这个作业,而这本书真的不清楚如何使用 argc、argv 和 atof() 项目(这对我来说都是新的),所以我正在尝试使用它们,但我得到了这个错误,我不太确定如何纠正它:

这是我的错误:

error: cannot convert ‘char**’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’

这是我的代码:

int main(int argc, char** argv)
{
   //Code removed

   //Code removed

   float *feet = atof(argv); // <-- it says the error is with this line

   //Code removed

   return 0;
}

float convertFeet(float feet)
{
   float meters = feet * .3048;

   return meters;
}

该程序的“目的”是将给定的英尺转换为浮点数,然后显示它们(同时将它们转换为米)。在添加程序的 atof()、argc 和 argv 部分之前,我已经知道 convertFeet() 函数可以正常工作。如果有人可以帮助我更好地理解此错误以及非常有帮助的解决方案!

再次感谢,

-斯蒂芬

PS这肯定是我的编译器告诉我的编译错误。我只是没有发布那部分错误,因为我认为那部分代码是多余的。

4

1 回答 1

4

char** argv 可以包含多个“字符串”。(我知道 C/C++ 在技术上没有字符串类型,但我希望你能从概念上理解我的意思)。argv 是一个 char * (字符串)数组,包括可执行文件的名称和所有参数;

例如:myfile.exe param1 param 2

会产生

argv[0] = myfile.exe
argv[1] = param1
argv[2] = param2

和 argc = 3

您可以通过几种不同的方式执行此操作,但最简单的是:

float feet = atof(argv[1]);

您应该进行一些错误检查以确保 argc 至少为 2 否则会炸毁您。也可能有多个参数 argv[2]、3 等。(如果 argc == 1 则不提供参数)

希望有帮助。

于 2013-11-28T18:27:35.190 回答