【发布时间】:2015-12-15 22:12:43
【问题描述】:
我正在编写一个从命令行读取“标志”以及程序名称的程序。我希望程序读取几个标志(-i、-c 和-n)并在调用一个或多个标志时执行不同的函数。
这是我开始写的代码:
printf("Argv 0: %s\n", argv[0]);
printf("Argv 1: %s\n", argv[1]);
printf("Argv 2: %s\n", argv[2]);
for (int i = 1; i <= argc + 1; i++) {
if (strcmp("-i", argv[i]) == 0) {
printf("%s\n", "found -i");
}
else{
printf("%s\n", "did not find -i");
}
}
只是尝试使用一个标志(-i),但我希望它同时读取一个或多个标志并调用相应的函数。
当我执行程序时:
./program-name test -i
Argv 0: test
Argv 1: -i
Argv 2: (null)
found -i
Segmentation fault
【问题讨论】:
-
不知道定义,
i <= argc + 1会不会导致越界访问? -
@MikeCAT 一句话:不,但
strcmp("-i", argv[argc])可以。