我试图将我的指针(numProcesses)设置为等于我程序中输入的命令行参数(它是一个存储在argv [1]中的int值)。我的问题是如何让numProcess等于argv [1]值。每次我尝试不同的方式,我得到argv [1]的地址位置而不是其内容。我知道指针在大多数情况下是如何工作的。我没有问题让这个在c ++中工作,但我是C的新手,所以有一点点艰难的时间。以下是我的代码,我感谢任何帮助/提示,谢谢。
void parentInfo(int *numProcesses);
int main (int argc, int *argv[])
{
//Creates a command line argument that stores an integer
int *numProcesses = (int *)malloc(sizeof(12));
if (argc < 2)
{
printf("\n\nUsage: %s <enter a number (12 or less)>\n\n", argv[0]);
exit (-1);
}
else
{
numProcesses = argv[1];
printf("numProcesses = %d", numProcesses);
if(*numProcesses > 12 || *numProcesses < 1)
{
printf("\n\nUsage: %s <enter a number (12 or lrss)>\n\n", argv[0]);
}
else
{
parentInfo(numProcesses);
}
}
return 0;
}
答案 0 :(得分:0)
首先,argv[1]
是char *
。没有“argv[1]
的内容” - argv[1]
是指向内存中某个位置的指针(如果我们幸运的话)包含一个字符串。
您实际需要的是将字符串转换为数字的方法。好吧,有atoi
:
numProcesses = atoi(argv[1]);
答案 1 :(得分:0)
#include <stdlib.h>
void parentInfo (int *numProcesses);
int main (int argc, char* argv[])
{
int num = atoi (argv[1]); // no error checking!
parentInfo (&num);
return 0;
}
如果您需要错误检查,请使用strtol
代替atoi
;你可能会这样。