我需要使用 getopt 来解析以下命令:
./center -n name –cp Anumber –i Anumber –t Anumber –s Anumber -fc nameOfaFile
所有这些都可以按任何顺序发出。
所以很明显我必须使用getOpt。
所以我一直在调查,这就是我到目前为止所拥有的
void check_parameters (int argc, char** argv) {
int opt;
while((opt = getopt(argc, argv, "n:cp:i:c:fc:")) != -1) {
printf("give me opt %c \n", opt)
swicth(opt){
case 'n' :
//do something
case 'cp' :
//do something
case 'i' :
//do something
}
}
}
我确实知道一个事实,即 3 参数:OptString 是我告诉 getOpt 它应该期望的选项的字符是什么在 optarg 中也是参数所在的位置
它不工作!当我 printf("give me opt %c", opt) 它给我的是数字,而不是字符!
因此,它不起作用。它没有正确检查参数
编辑:执行 man 3 getopt 后,getopt 的返回值为:如果成功找到选项,则 getopt() 返回选项字符。如果所有命令行选项都已解析,则 getopt() 返回 -1。
它返回选项字符?它总是返回整数 1。总是!我不明白 getopt 是如何工作的。开关与字符相比如何?!