如何阅读程序参数

我想读取客户端请求的线程数。 所以如果有人像这样运行我的程序:

./test 2 

我必须读取等于2的线程数。我尝试getchar()但它不起作用。 任何的想法?

这与线程本身无关。

你的程序的第一个参数,如果给出,将在argv[1]找到,但作为一个字符串,所以你需要把它变成一个像atoistrtol这样的整数。

这是一个最小的示例,包含完整,正确的错误检查和诊断消息。 请注意,将errno为0是区分范围错误和有效strtoul()输出所必需的,这是一个烦人的函数怪癖。

 #include  #include  #include  int main(int argc, char *argv[]) { if (argc != 2) { fputs("usage: test NTHREAD\n", stderr); exit(1); } char *e; errno = 0; unsigned long nthread = strtoul(argv[1], &e, 0); if (!*argv[1] || *e) { fputs("error: invalid NTHREAD\n", stderr); exit(1); } if (nthread == (unsigned long) -1 && errno == ERANGE) { fputs("error: NTHREAD out of range\n", stderr); exit(1); } // Your code goes here } 

int main(int argc, int **argv)

使用main参数,您应该知道第一个参数argv[0]是当前正在执行的文件的名称,以下参数是发送到您的程序的参数。

在您的情况下,您必须阅读argv[1]

始终检查argc以计算输入的参数。