直接shell输入为C程序参数

时间:2014-03-03 19:22:26

标签: c bash shell stdin

假设我有一个C程序,其函数声明为void square(int n),(它也已定义)所有它printf的平方值n。我希望能够像这样从bash shell运行它:square 5,其中5是C程序的输入。

我该怎么做?我已经研究过使用getoptread,我已经多次阅读了这些手册,并观看了几个getopt教程,但我似乎无法找到方法做这个。我找不到示例中不使用标志的getopt示例,因此我不知道如何将其应用于简单的整数输入。任何人都可以与我分享如何做到这一点?我真的很感激。

1 个答案:

答案 0 :(得分:7)

如果您没有其他任何需要处理的命令行选项,getopt可能有点过分。您只需要从argv

中读取值
int main(int argc, char *argv[])
{
    int n;

    // need "2 args" because the program's name counts as 1
    if (argc != 2)
    {
        fprintf(stderr, "usage: square <n>\n");
        return -1;
    }

    // convert the first argument, argv[1], from string to int;
    // see note below about using strtol() instead
    n = atoi(argv[1]);

    square(n);

    return 0;
}

更好的解决方案use strtol() instead of atoi()将检查转化是否有效。