我正在尝试将整数数组传递到我的程序中。有没有更好的方法将其转换为整数?我目前收到一个错误:“可变大小的对象可能未初始化”
for(i = 0; i < argc; i++)
{
int arr[i] = atoi(argv[i]);
}
假设argc
和argv
是传递给 main 的参数,那么您不太可能argv[0]
将其转换为整数。argv[0]
通常包含程序的名称。
您的代码片段正在声明循环体的本地数组。您可能想要的是在循环体外部定义的数组,并且您希望分配给循环体中的各个数组元素。
int arr[argc];
for(i = 1; i < argc; i++)
{
arr[i] = atoi(argv[i]);
}
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