我想将一个整数数组传入我的程序。有没有更好的方法将其转换为整数?目前,我得到一个错误:“变量大小的物体可能无法初始化”将“整数字符串”转换为整数数组
for(i = 0; i < argc; i++)
{
int arr[i] = atoi(argv[i]);
}
我想将一个整数数组传入我的程序。有没有更好的方法将其转换为整数?目前,我得到一个错误:“变量大小的物体可能无法初始化”将“整数字符串”转换为整数数组
for(i = 0; i < argc; i++)
{
int arr[i] = atoi(argv[i]);
}
假设argc
和argv
是传递到主参数,这是不可能的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;
}
这里是输出:
[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
解决!谢谢! –
我忘了第一个参数是该程序的名称。解决了!谢谢! –
非常欢迎。 – jxh