C-在数组中存储main()参数
我正在使用bankers算法创建一个多线程程序,所有程序都经过硬编码和编译,但从用户输入填充初始C-在数组中存储main()参数,c,main,argv,argc,C,Main,Argv,Argc,我正在使用bankers算法创建一个多线程程序,所有程序都经过硬编码和编译,但从用户输入填充初始可用数组时遇到了问题 #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("AVAILABL
可用数组时遇到了问题
#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");
}
您不能使用普通赋值将字符串转换为整数(您应该得到一个编译器警告,关于在不使用强制转换的情况下将char*
赋值给int
)。调用atoi()
解析整数
available[i-1] = atoi(argv[i]);
您不能使用普通赋值将字符串转换为整数(您应该得到一个编译器警告,关于在不使用强制转换的情况下将char*
赋值给int
)。调用atoi()
解析整数
available[i-1] = atoi(argv[i]);
使用atoi
将字符串转换为int
确保您没有访问可用
超出范围
for(i=1;i
使用atoi
将字符串转换为int
确保您没有访问可用
超出范围
for(i=1;iargv
的元素是字符串,而不是数字。使用%s
而不是%d
打印它们。可用变量的类型是什么?可用[i-1]=atoi(argv[i]);printf(“%d”,可用[i-1])代码>您正在尝试将字符串指针打印为整数argv[]
是指针数组。根据您给出的数字,很可能第一个参数的长度为2(大小为3),下一个参数的长度为1(大小为2)。argv
的元素是字符串,而不是数字。使用%s
而不是%d
打印它们。可用变量的类型是什么?可用[i-1]=atoi(argv[i]);printf(“%d”,可用[i-1])代码>您正在尝试将字符串指针打印为整数argv[]
是指针数组。从您给出的数字来看,很可能第一个参数的长度为2(大小为3),下一个参数的长度为1(大小为2)。如果编译器使用32位指针,您可能不会收到错误,这可能是您实际想要做的。@指针的大小无关紧要,它们仍然是不同的类型。任何像样的编译器都应该警告这样的自动转换。要解析外部输入,请使用strtol
而不是atoi
。如果编译器使用32位指针,可能不会出现错误,而这可能正是您真正想要做的。@指针的大小无关紧要,它们仍然是不同的类型。任何像样的编译器都应该警告这样的自动转换。对于解析外部输入,请使用strtol
而不是atoi
。您的意思可能是i-1
?您的意思可能是i-1
?
for (i = 1; i < argc && i < NUMER_OF_RESOURCES+1; i++)
{
available[i-1] = atoi(argv[i]);
printf("%d ", available[i-1]);
}