gpt4 book ai didi

c - getopt() 中的 optarg 始终为 null

转载 作者:行者123 更新时间:2023-11-30 16:59:18 29 4
gpt4 key购买 nike

我正在尝试使用 getopt() 的 optarg 参数来处理实参参数,但它仍然为空。这可能与c99标准有关吗?我知道我需要实际从 optarg 复制字符串,但它甚至从未被设置。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <getopt.h>
#include <string.h>

int main(int argc, char *argv[]) {
char *optarg;
int ch;

char *indir = NULL;

while ((ch = getopt(argc, argv, "d:")) != -1) {
switch(ch) {
case 'd':
indir = optarg;
fprintf(stderr, "Optarg: %s\n", optarg);
fprintf(stderr, "Dir name: %s\n", indir);
break;
default :
fprintf(stderr, "Usage: test -d <input directory>\n");
exit(1);
}
}
if(indir == NULL){
fprintf(stderr, "Input directory required.\n");
exit(1);
}
else{
printf("Input dir: %s\n", indir);
}


return 0;
}

最佳答案

optarg 是通过调用 getopt() 来初始化的,您可以通过自己初始化来覆盖它。删除行“char* optarg;”你应该可以开始了。

关于c - getopt() 中的 optarg 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38214785/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com