我正在传递我的程序输入,我可以在 argv 中看到它们,但 getopt 似乎没有我期望的参数。
这是我运行程序的方式:./my_prog -X -f 文件名
<snip>
while ((opt = getopt(argc, argv, "Xf:eE:dD")) != EOF) {
switch (opt) {
case 'X':
case 'f':
if (optarg == NULL)
fput("no point of living", fp); << for debugging
</snip>
我总是将 optarg 设为 null。为什么?
最佳答案
您的参数字符串在 X 之后没有 :(例如 X:f),因此 optarg 将始终为 null。
我还要指出,通常在 switch 语句中你会希望在每个 case 之后有一个 break(通常,不总是,但通常在解析参数时),所以:
switch ( ... ) {
case 'X': {
// do something
} break;
case 'f': {
// do something else
} break;
}
关于c - getopt 值保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6450152/