【发布时间】:2016-01-15 18:55:06
【问题描述】:
我正在使用银行家算法创建一个多线程程序,对所有程序进行硬编码和编译,但我在从用户输入中填充初始 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 ]
【问题讨论】:
-
argv的元素是字符串,而不是数字。用%s打印它们,而不是%d。 -
available变量的类型是什么? -
available[i-1] = atoi(argv[i]); printf("%d ", available[i-1]); -
您正在尝试将字符串指针打印为整数。
argv[]是一个指针数组。从您给出的数字来看,很可能第一个参数的长度为 2(大小为 3),而下一个参数的长度为 1(大小为 2)。