将“整数字符串”转换为整数数组

时间:2013-10-20 02:57:43

标签: c arrays atoi

我正在尝试将一个整数数组传递给我的程序。有没有更好的方法将其转换为整数?我目前收到一个错误:“可能无法初始化变量大小的对象”

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

2 个答案:

答案 0 :(得分:3)

假设argcargv是传递给main的参数,argv[0]不太可能要转换为整数。 argv[0]通常包含程序的名称。

您的代码段声明了循环体的局部数组。你可能想要的是在循环体外定义的数组,并且你想要分配给循环体内的各个数组元素。

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

答案 1 :(得分: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;
}

这是输出:

Sukhvir@Sukhvir-PC ~
$ gcc -Werror -Wall -g -o test test.c

Sukhvir@Sukhvir-PC ~
$ ./test 3 4 5
arr[0] = 3
arr[1] = 4
arr[2] = 5