如何在C中搜索命令行参数?

时间:2016-12-05 20:30:08

标签: c

我编译并运行了一个C代码(很多文件),但我需要了解命令行参数的物理含义。我运行这样的代码

./testmt signal1 3 5 1 1

,其中 signal1是输入文件

如何搜索多个.c文件以查找命令行参数(希望使用注释行)?

1 个答案:

答案 0 :(得分:2)

这是特定于操作系统的。我想你是在Linux或其他一些Posix系统上。先阅读Advanced Linux Programming。另请阅读globbing。请注意,您的Unix shell正在扩展参数(并在扩展后调用execve(2)系统调用....)。如果你的shell是bash(实际上这个行为是由POSIX强制执行的),请阅读Shell Operation,然后阅读Shell expansions。另请阅读libc文档的Program Arguments章节。另请参阅my answer关于“设计命令行参数的良好习惯?”。

main函数(签名int main(int argc, char**argv);,这样的[可能]签名由C标准定义) - 由execve启动的程序 - 得到正参数计数和一个NULL终止的字符串数组。因此,在您的情况下(./testmt signal1 3 5 1 1),您获得argc=6argv[0]"./testmt"argv[1]"signal"argv[2]为{ {1}}等... "3"是最后一个argv[5]"1"argv[6]

然后深入了解您的代码,并寻找NULL

PS。 AFAIK,在Windows上的行为可能与众不同。程序(不是shell)正在扩展参数(实际上,可能在启动文件中完成,然后才调用main)。但我对Windows一无所知。另请参阅 Operating Systems: Three easy pieces