如何阅读程序参数
我想读取客户端请求的线程数。 所以如果有人像这样运行我的程序:
./test 2
我必须读取等于2的线程数。我尝试getchar()
但它不起作用。 任何的想法?
这与线程本身无关。
你的程序的第一个参数,如果给出,将在argv[1]
找到,但作为一个字符串,所以你需要把它变成一个像atoi
或strtol
这样的整数。
这是一个最小的示例,包含完整,正确的错误检查和诊断消息。 请注意,将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
以计算输入的参数。