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

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

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

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

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

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

每次循环时都会声明数组arr

像这样改变你的循环:

 #include #include 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