【发布时间】:2015-04-23 03:17:36
【问题描述】:
我有这样的代码将argv 存储到动态分配的int 数组中:
int *data; // pointer to array of integer numbers
int size; // size of data array
int main(int argc, char* argv[]) {
// initialize array data
size=argc;
printf("%dSize=\n",size);
printf("%d\n",argc);
data=(int*)calloc(size,sizeof(int));
int i=0;
for (i=1;i<size;i++)
{
data[i]=argv[i];
printf("%d\n",data[i]);
}
for (i=1;i<argc;i++)
{
printf("%d\n",argv[i]);
}
return 0;
}
当我在命令行中运行时:
./sumprime 5 1 2 3 4
它打印:
6Size=
6
15311660
15311662
15311664
15311666
15311668
15311660
15311662
15311664
15311666
15311668
不是我预期的5 1 2 3 4 数组。如何存储来自argv 的int 数组然后打印出来?
【问题讨论】:
-
这些是作为 char 数组的参数的指针值。您应该使用
strtol或atoi将参数字符串转换为整数,然后再将它们存储到int数组中。 -
@MOehm :这是答案而不是评论;你应该发布一个答案。