我无法将命令行中的argc和argv转换为函数调用

我无法将命令行中的argc和argv转换为函数调用,c,function,argv,C,Function,Argv,这是代码的第一个版本。它的目的是取argc5之后的每个数字,并将其视为多项式。但是,它需要考虑argc5之后的所有输入。然后,它将被传递给我将计算的变量X,但为了简单起见,我将把它赋值为5 #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char* argv[]) { double begin = atof (argv[1]); //start of g

这是代码的第一个版本。它的目的是取argc5之后的每个数字,并将其视为多项式。但是,它需要考虑argc5之后的所有输入。然后,它将被传递给我将计算的变量X,但为了简单起见,我将把它赋值为5

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char* argv[])
{

double begin = atof (argv[1]); //start of graph
double end = atof (argv[2]);  //end of graph
double inc = atof (argv[3]); //level of incriments FIXME
double low = atof (argv[4]); // lower section (what?)
double high = atof (argv[5]); //higher section(what?)


// need nested for loop use I total out of loop to get additive number.
// NO NEGATIVE NECESSARY
double sum=0;
double x=5;


printf("argc :%d\n", argc);  //argc counts initialization character
double j=argc-5-2;
printf("initial j %lf\n", j);

for (int i=6; i<argc; i++)
{
        sum = sum + (atof(argv[i]) * pow(x,j));
       j--;

}
printf("%lf\n", sum);



return 0;
}
另外,如果我的问题格式错误,请让我知道我可以做些什么来改进它

这里有两个问题。首先,calcX接受三个参数,但只传递一个:

calcX(x);
您还需要传递argc和argv:

其次,在声明函数calcX之前使用该函数,因此隐式声明该函数以获取未知数量的参数并返回int。这与实际定义冲突


要解决此问题,请将calcX的定义移到main上方。

其目的是将argc5之后的每一位数字作为多项式。但是,它需要考虑argc5之后的所有输入。然后,它将被传递给变量X,我将计算,但为了简单起见,我将把它赋值为5。我不理解,请阅读。打开你最喜欢的C语言书,当你调用一个函数时,你需要传递它的所有参数calcXargc,argv,X;尝试将函数calcX移到main上方。这将更改您收到的错误消息,并提供对错误的更多了解。在调用calcX之前,必须声明calcX。旧版本的C对这个规则比较宽松,但忽略了这一点。添加声明void calcXint argc,char*argv[],双x;在梅因之前。将calcX的整个定义移到main的定义之上是另一种方法。我马上就把它放进去,我忘了把函数放在main之前的简单方法,所以我会修改代码,过一会儿再回来。非常感谢!
$ gcc 2v.c
2v.c: In function ‘main’:
2v.c:17:1: warning: implicit declaration of function ‘calcX’ [-Wimplicit-function-declaration]
 calcX(x);
 ^~~~~
2v.c: At top level:
2v.c:24:6: warning: conflicting types for ‘calcX’
 void calcX(int argc, char*argv[], double x)
      ^~~~~
2v.c:17:1: note: previous implicit declaration of ‘calcX’ was here
 calcX(x);
 ^~~~~
calcX(x);
calcX(argc, argv, x);