【发布时间】:2013-12-22 23:24:28
【问题描述】:
你好,我正在编写一个程序,该程序从 c 中的命令行接收多个选项。这些是一些选项:
-l counts number of lines in file
-w counts words in file
-c counts characters in file
为了让它们发挥作用,你可以这样做:
./program -l file.txt
./program -w file.txt
./program -c file.txt
但是我想将它们组合起来,以便多个选项仍然可以正常工作。例如:
./program -lwc file.txt
将计算行数、单词数和文件数,
./program -lw file.txt
将计算行数和字数,
./program -cl file.txt
将计算字符和行等。我只是不知道如何做到这一点。这是我的参数代码:
while ( ( c = getopt( argc, argv, "c:w:l:" ) ) != -1 ) { /* get options */
switch ( c ) {
case 'c':
cflag = 1;
break;
case 'w':
wflag = 2;
break;
case 'l':
lflag = 3;
break;
}
}
它只是简单地改变选项,但它仍然不起作用。使用我现在拥有的代码,结合两个选项会导致段错误。任何帮助表示赞赏
【问题讨论】:
-
您应该使选项不带参数,然后在选项处理完成时读取文件名(当
getopt返回-1时)。为此使用optind。 -
谢谢你,这很简单,我搞定了。
标签: c linux command-line gnu getopt