我基本上想从命令行读取用户输入的值并将它们放入数组中。到目前为止,我的尝试如下
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define w 1.0
int main(int argc, char argv[])
{
int tmp;
double *x, *v, *m, *k, *R;
x = malloc((argc-1)*sizeof(double));
printf("%lf\n", argc);
for(tmp=0; tmp<argc-1; tmp++)
{
x[tmp] = argv[tmp+1];
printf("%lf\n", x[tmp]);
}
}
argc 的值打印为 0,但 for 循环将重复三次,这没有意义,它给出的值完全错误。抱歉,我在这方面有点业余。提前致谢!
最佳答案
您的代码有很多问题,其他人已经提到了一些问题,例如 argv
需要具有 char *[]
类型。
首先,如果 argc
为 1,那么您的 malloc
将失败,因为分配大小为 0 的内存没有意义。
其次,printf("%lf\n", argc);
不正确。 argc
是int
,您需要使用%d
来打印它。您看到错误的 0 的原因是这样的。
第三,x[tmp] = argv[tmp+1];
也不正确。 argv[tmp+1]
是一个char *
,这意味着它是一个字符串。而 x[tmp]
是一个 double
。您不能只将字符串分配给 double 。您需要做的是将字符串转换为 double,例如:
sscanf(argv[tmp+1], "%lf", &x[tmp]);
或
x[tmp] = strtod(argv[tmp+1]);
提示:始终使用常见警告编译您的代码。对于 gcc,这将是 -Wall
命令行参数。编译器可以告诉您其中的许多错误。
关于c - 将未指定数量的命令行输入放入 C 中的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21203971/