我正在学习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
非常感谢!
答案 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;
}