2013-10-20 151 views
1

我想将一个整数数组传入我的程序。有没有更好的方法将其转换为整数?目前,我得到一个错误:“变量大小的物体可能无法初始化”将“整数字符串”转换为整数数组

for(i = 0; i < argc; i++) 
{ 
    int arr[i] = atoi(argv[i]); 
} 

回答

3

假设argcargv是传递到主参数,这是不可能的argv[0]是要转换成整数的东西。 argv[0]通常包含程序的名称。

您的代码片段正在声明循环体的本地数组。你可能想要的是一个在循环体外部定义的数组,并且你想分配给循环体内的单个数组元素。

int arr[argc]; 
for(i = 1; i < argc; i++) 
{ 
    arr[i] = atoi(argv[i]); 
} 
+0

我忘了第一个参数是该程序的名称。解决了!谢谢! –

+0

非常欢迎。 – jxh

2

arr你每次循环宣告你的阵列。

改变你的循环是这样的:

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

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

    int arr[argc]; 
    int i=0; 


    for(i = 0; i < argc-1; i++) 
    { 
     arr[i] = atoi(argv[i+1]); 
     printf("arr[%d] = %d\n",i,arr[i]); 
    } 

    return 0; 
} 

这里是输出:

[email protected] ~ 
$ gcc -Werror -Wall -g -o test test.c 

[email protected] ~ 
$ ./test 3 4 5 
arr[0] = 3 
arr[1] = 4 
arr[2] = 5 
+0

解决!谢谢! –