如何使用argc,*argv[]在C中进行计算?

如何使用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;

我正在使用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;
        }
但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]);