当我们不向C可执行程序提供参数时如何处理exception
我有这个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
在调用getopt
之前,请检查argc
if ( argc == 1 ) { fprintf(stderr, "... "); return -1; }
请参阅inFile
和outFile
为NULL
然后在你的getopts循环之后检查是否仍然是NULL。 如果是,则打印使用消息并退出
if (inFile == NULL || outFile == NULL) error_usage(argv[0]);