我有以下代码:
while ((c = getopt(argc, argv, "i:o:")) != -1) {
switch (c) {
case 'i':
inFile = strdup(optarg);
break;
case 'o':
outFile = strdup(optarg);
break;
default:
//usage(argv[0]);
//error_usage(argv[0]);
{
fprintf(stderr, "usage: %s <-i input file> <-o output file>\n", argv[0]);
exit(EXIT_FAILURE);
}
}
}
被送到像这样运行的程序:
./program -i inFile -o outFile
但是测试我程序的程序(不是我写的)给了我这个错误:
Expected " + str(status) + " got " + str(child.returncode))
你知道我应该如何处理不好的论据而不是我上面所做的事情?请给我一个代码片段,而不仅仅是单词,因为如果没有代码,我很难弄明白。
答案 0 :(得分:0)
这里的问题似乎与测试程序有关,而不是代码;它没有传递正确的参数(或以错误的方式传递正确的参数),然后当你的程序告诉它错误的时候让所有人烦恼。
将错误打印到stderr并返回EXIT_FAILURE被认为是处理错误参数的“正确”方法,否则如果你将一个程序的输出传输到另一个程序中,如下所示:
ls --cookies! | sed 's/[.].*//'
并且ls假装没有出错,sed将按预期处理使用信息而不是目录内容。