📅  最后修改于: 2023-12-03 15:06:34.543000             🧑  作者: Mango
在C语言中,可以通过从命令行读取参数来实现程序的灵活性和可配置性。本文将介绍如何在C语言中从命令行读取参数。
在C语言中,可以通过main函数的参数argc和argv来从命令行读取参数。其中,argc表示命令行参数的个数,argv是一个字符串数组,包含了命令行参数的内容。下面是一个实例:
#include <stdio.h>
int main(int argc, char* argv[]) {
int i;
for (i = 0; i < argc; i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}
运行上面的程序时,可以在命令行中输入参数。例如:
$ ./a.out hello world
输出结果为:
argv[0] = ./a.out
argv[1] = hello
argv[2] = world
从命令行读取参数后,还需要解析这些参数才能进行相应的处理。可以使用getopt库函数来解析命令行参数。getopt函数可以识别短选项(单个字母)和长选项(多个字母)。
下面是一个例子:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
int opt;
while ((opt = getopt(argc, argv, "abc:")) != -1) {
switch (opt) {
case 'a':
printf("option a\n");
break;
case 'b':
printf("option b\n");
break;
case 'c':
printf("option c=%s\n", optarg);
break;
default: /* '?' */
fprintf(stderr, "Usage: %s [-a] [-b] [-c option]\n", argv[0]);
return 1;
}
}
if (optind < argc) {
printf("non-option argument(s): ");
while (optind < argc)
printf("%s ", argv[optind++]);
printf("\n");
}
return 0;
}
在上面的例子中,下面是有用的代码片段:
int opt;
while ((opt = getopt(argc, argv, "abc:")) != -1) {
switch (opt) {
case 'a':
printf("option a\n");
break;
case 'b':
printf("option b\n");
break;
case 'c':
printf("option c=%s\n", optarg);
break;
default: /* '?' */
fprintf(stderr, "Usage: %s [-a] [-b] [-c option]\n", argv[0]);
return 1;
}
}
其中:
更多的使用方法可以参考man getopt。
在C语言中,可以通过从命令行读取参数来实现程序的灵活性和可配置性。通过解析命令行参数,可以方便地处理用户输入的参数。