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

C - Storing main() arguments in an array

我正在使用银行家算法创建一个多线程程序,所有程序都经过硬编码和编译,但我在从用户输入

填充初始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 ] 

您不能使用普通赋值将字符串转换为整数(您应该已经收到有关在不进行强制转换的情况下将 char* 赋值给 int 的编译器警告)。调用 atoi() 解析整数。

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