C程序中的命令行参数?
如何读取C中的命令行参数?例如,在C程序中的命令行参数?,c,parameters,C,Parameters,如何读取C中的命令行参数?例如,在 ./test --help 或 如何访问“-build”或“-help”?您的参数在argv中: int main(int argc, char **argv) 如果您打印argv的内容(argv[0]、argv[1]等),您就会明白这一点 尝试: int main(int argc,char**argv) { 对于(int i=0;i
./test --help
或
如何访问“-build”或“-help”?您的参数在argv中:
int main(int argc, char **argv)
如果您打印argv的内容(argv[0]、argv[1]等),您就会明白这一点
尝试:
int main(int argc,char**argv)
{
对于(int i=0;i
最基本的方法是使用参数(int argc,char*argv[])
,您可以直接解析这些参数
一个更高级的方法是使用getopt 您可以将
argc
和argv
参数用于main
函数,并根据它们执行不同的操作:
#include <string.h>
void dohelp(void) { /* whatever; */ }
void dobuild(void) { /* whatever; */ }
int main(int argc, char **argv) {
if (argc == 2) {
if (!strcmp(argv[1], "--help")) dohelp();
if (!strcmp(argv[1], "--build")) dobuild();
}
return 0;
}
有几种方法可以[像往常一样]做到这一点。 命令行参数从argv读取(与argc一起传递到main)
您可以自己解析这些选项,并在每次在argv中找到新选项时设置位开关标志。也可以使用库来解析命令行参数。我建议使用libc-getopt(google-it)。命令行参数是传递给程序并带有其名称的参数。例如,UNIX程序cp(复制两个文件)具有以下命令行参数:
cp源目的地
您可以使用argc
和argv
访问命令行参数:
int main(int argc, char *argv[])
{
return 0;
}
argc是参数数,包括程序名,argv是包含参数的字符串数组argv[0]
是程序名,argv[argc]
保证为NULL
指针
因此,cp
程序可以这样实现:
int main(int argc, char *argv[])
{
char *src = argv[1];
char *dest = argv[2];
cpy(dest, src);
}
它们不必命名为
argc
和argv
;它们可以有您想要的任何名称,尽管传统上称之为。如果strcmp返回true(例如,不匹配),则表示分段错误?有一个代码>在strcmp之前使其匹配谢谢!这正是我们需要的。虽然strcmp不需要包括stdio.h/*rgaggghh*/
但不要犹豫。告诉我们你的真实想法。@Daniel:strcmp()的声明存在于string.h
中stdio.h
恰好包括string.h
。同时包含string.h
和stdio.h
并没有什么坏处,但我会这么做。命令行参数是主函数的一部分。
int main(int foo, char **bar) /* RGAGGGGHH */
int main(int n, char **options) /* RGAGGGGHH */
int main(int argc, char *argv[])
{
return 0;
}
int main(int argc, char *argv[])
{
char *src = argv[1];
char *dest = argv[2];
cpy(dest, src);
}