假设我有一个C程序,其函数声明为void square(int n)
,(它也已定义)所有它printf
的平方值n
。我希望能够像这样从bash shell运行它:square 5
,其中5是C程序的输入。
我该怎么做?我已经研究过使用getopt
,read
,我已经多次阅读了这些手册,并观看了几个getopt
教程,但我似乎无法找到方法做这个。我找不到示例中不使用标志的getopt
示例,因此我不知道如何将其应用于简单的整数输入。任何人都可以与我分享如何做到这一点?我真的很感激。
答案 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()
将检查转化是否有效。