直接shell输入为C程序参数

del*_*los 1 c bash shell stdin

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

我该怎么做?我已经开始使用了getopt,read我已经多次阅读了这些手册页并观看了一些getopt教程,但我似乎无法找到一种方法来做到这一点.我找不到一个例子,getopt在示例中没有使用标志,所以我不知道如何将它应用于简单的整数输入.任何人都可以与我分享如何做到这一点?我真的很感激.

Typ*_*eIA 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;
}
Run Code Online (Sandbox Code Playgroud)

使用strtol()atoi()更好的解决方案,而不是检查转换是否有效.

  • @FiddlingBits如果程序被编译为当前目录中名为`square`的可执行文件,则需要运行的所有内容(来自提示符或shell脚本)都是`./square 5`. (2认同)