C - 在数组中存储main()参数

时间:2015-10-16 22:14:13

标签: c main argv argc

我正在创建一个利用银行家算法的多线程程序,所有程序都经过硬编码和编译,但我在用户输入填充初始available数组时遇到问题

#DEFINE NUMBER_OF_RESOURCES 3

int available[NUMER_OF_RESOURCES];       //available will be length of argc i.i number of total resoruces

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

printf("AVAILABLE RESOURCE: \n [");
//Populate Available Resource Array
for (i = 1; i < argc; i++)
{
    available[i-1] = argv[i];
    printf("%d ", available[i]);
}
printf("] \n\n");
}

执行时: ./a.out 10 7 5

打印:

[1604031496 1604031499 1604031501 ] 

2 个答案:

答案 0 :(得分:5)

您不能将字符串转换为具有普通赋值的整数(您应该收到编译器警告,指出char*在没有强制转换的情况下分配给int。调用atoi()来解析整数。

available[i-1] = atoi(argv[i]);

答案 1 :(得分:0)

  1. 使用atoi将字符串转换为int
  2. 确保您无法访问available越界。
  3. for (i = 1; i < argc && i < NUMER_OF_RESOURCES+1; i++)
    {
        available[i-1] = atoi(argv[i]);
        printf("%d ", available[i-1]);
    }
    
相关问题