1

我正在学习 C 编程,但遇到了一个我在任何地方都找不到答案的问题。

我想做的是编写一个 C 程序,我可以直接从终端使用附加参数运行它,例如

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

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

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

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

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

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

非常感谢!

4

2 回答 2

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 库 有助于解析命令行,就像在一般的 unix/gnu 实用程序中使用的那样

于 2013-03-14T05:52:03.910 回答
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;
}
于 2013-03-14T05:53:34.357 回答