我正在创建一个利用银行家算法的多线程程序,所有程序都经过硬编码和编译,但我在用户输入填充初始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 ]
答案 0 :(得分:5)
您不能将字符串转换为具有普通赋值的整数(您应该收到编译器警告,指出char*
在没有强制转换的情况下分配给int
。调用atoi()
来解析整数。
available[i-1] = atoi(argv[i]);
答案 1 :(得分:0)
atoi
将字符串转换为int
。available
越界。for (i = 1; i < argc && i < NUMER_OF_RESOURCES+1; i++)
{
available[i-1] = atoi(argv[i]);
printf("%d ", available[i-1]);
}