如何阅读程序参数

时间:2013-03-08 22:16:54

标签: c

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

./test 2

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

3 个答案:

答案 0 :(得分:4)

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

#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
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
}

答案 1 :(得分:3)

这与线程本身无关。

您的程序的第一个参数(如果给出)将在argv[1]中找到,但作为字符串,因此您需要将其转换为类似atoistrtol的整数

答案 2 :(得分:2)

int main(int argc, int **argv)

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

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

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