编写可以使用命令行中的附加参数运行的C程序

时间:2013-03-14 05:46:14

标签: c function

我正在学习C编程并且遇到了一个我无法在任何地方找到任何答案的问题。

我想要做的是编写一个C程序,我可以直接从终端运行其他参数,例如

cat -n input.txt - nosuchfile.txt input.txt

我想知道的是我如何编写任何函数,以便我可以像上面那样运行它(编译后),所以程序的功能可能不是很重要,但为了完整起见,cat列出了输入文件并将它们打印到stdout。它具有完整的错误处理(因此文件为nosuchfile.txt),并且还可以包括行号(-n)并从标准输入( - )获取输入。

为了澄清,我之前编写了可以编译源文件的程序,并运行程序,例如./cat,如果需要输入,则在此命令之后获取此命令以开始运行程序。因此,终端看起来像这样:

gcc ...
./cat
-n input.txt - nosuchfile.txt input.txt

我想知道如何能够像这样运行程序

gcc...
cat -n input.txt - nosuchfile.txt input.txt 

非常感谢!

2 个答案:

答案 0 :(得分:0)

在大多数系统中,main有2或3个明确定义的参数:

#include <stdio.h>
int main(int ac, char **av) { printf("%d %s\n", ac, av[0]); return 0; }

将打印参数数量(+1)和程序名称。 av[1]将包含指向包含第一个参数(如果ac> 1)等的字符串的指针。

第三个可能的参数, char **env)(在某些系统下)将包含指向环境变量的指针。

修改 gnu getopt library帮助解析命令行,就像unix / gnu实用程序中常用的那样

答案 1 :(得分:0)

您可以使用命令行参数:

#include <stdio.h>

int main( int argc, char *argv[] ) // argc is the (c)ount of arguments, argv is the (v)alues
{
  printf( "\nCommand-line arguments:\n" );

  for( int count = 0 ; count < argc ; count++ )
  {
    printf( "  argument %d = %s\n", count, argv[count] );
  }

  return 0;
}