我有这个C程序,它应该给出如下参数:
./ program -i inputFile -o outputFile
这是我相关的代码部分
while ((c = getopt(argc, argv, "i:o:")) != -1) {
switch (c) {
case 'i':
inFile = strdup(optarg);
break;
case 'o':
outFile = strdup(optarg);
break;
default:
error_usage(argv[0]);
}
}
这里也是error_usage函数:
void error_usage(char *prog)
{
fprintf(stderr, "Usage: %s -i inputfile -o outputfile\n", prog);
exit(1);
}
如果我按照以下方式运行我的程序,我应该如何修改我的case语句:
./program
它给我以下错误?
Usage: prog -i inputfile -o outputfile
答案 0 :(得分:2)
在致电getopt
之前,请检查argc
if ( argc == 1 )
{
fprintf(stderr, "... ");
return -1;
}
答案 1 :(得分:2)
请参阅inFile
和outFile
为空
然后在你的getopts循环之后检查是否仍然是NULL。如果是,则打印使用消息并退出
if (inFile == NULL || outFile == NULL)
error_usage(argv[0]);