如何使用argc,*argv[]在C中进行计算?
我正在使用argc和*argv[]计算半径为r米的球体的体积,我想如果在命令行中输入“/radius 2”,argv[1]将变为“2”,因此代码为:如何使用argc,*argv[]在C中进行计算?,c,C,我正在使用argc和*argv[]计算半径为r米的球体的体积,我想如果在命令行中输入“/radius 2”,argv[1]将变为“2”,因此代码为: int main(int argc, char *argv[]){ float v; v = 4.0 / 3.0 * 3.14 * argv[1] * argv[1] * argv[1]; printf("V = %f\n", v); return 0;
int main(int argc, char *argv[]){
float v;
v = 4.0 / 3.0 * 3.14 * argv[1] * argv[1] * argv[1];
printf("V = %f\n", v);
return 0;
}
但argv似乎无法进行计算。
我该怎么办?命令行参数作为字符串传递给程序-您需要使用
atof
或strod
将值的字符串表示形式转换为其等效数字
#include <stdlib.h>
#include <stdio.h>
int main( int argc, char **argv )
{
// All kinds of error checking ommitted
double input = strtod( argv[1], NULL );
double v = 4.0 / 3.0 * 3.14 * input * input * input;
...
}
#包括
#包括
int main(int argc,字符**argv)
{
//所有类型的错误检查都已完成
双输入=strtod(argv[1],NULL);
双v=4.0/3.0*3.14*输入*输入*输入;
...
}
除非您确实受空间限制,否则请使用
double
而不是float
您没有变量i
。如果需要,可以将argv
视为字符串数组,argv[0]
是可执行文件的名称,因此在本例中/radius
,argv[1]
在本例中为2,依此类推
您应该记住的一点是,检查argc
是一种良好的做法,以确保您拥有所需的参数,argc
将告诉您argv
的长度,因此在您的情况下,它将为2
然后,您可以使用您传递的号码,如:
double arg = atof(argv[1]);
double v = 4.0 / 3.0 * 3.14 * arg * arg * arg;
或:
或者(最糟糕的方法):
如果出于某种原因,你真的不想有单独的变量
但正如我所说,您应该首先检查您是否有足够的参数使用
argc
,并且该参数是您实际想要的(例如,一个数字而不是一个字符串)从理解argv[i]
是一个字符串开始使用atoi
转换“2”到int
或atof
将其转换为double
。还要记住,argv
没有进行任何计算,它只是数据。相反,您正在使用argv
进行一些计算。正如所发布的,argv[i]
应该告诉您i
是未定义的。如果需要argv[1]
您应该确保1
不大于(或等于)argc
。
int i = 1;
double arg = atof(argv[i]);
double v = 4.0 / 3.0 * 3.14 * arg * arg * arg;
double v = 4.0 / 3.0 * 3.14 * atof(argv[1]) * atof(argv[1]) * atof(argv[1]);