我有一个关于getopt函数的问题,如下面的代码所示,“ch”的类型是“int”,但在switch子句中,它被视为“char” ..我很困惑,为什么?锄头getopt()处理char类型
Thansk !!
int main(int argc, char **argv)
{
extern int optind;
extern char * optarg;
int ch;
char * format = "f:hnBm:";
// Default makefile name will be Makefile
char szMakefile[64] = "Makefile";
char szTarget[64];
char szLog[64];
while((ch = getopt(argc, argv, format)) != -1)
{
switch(ch)
{
case 'f':
strcpy(szMakefile, strdup(optarg));
break;
case 'n':
break;
case 'B':
break;
case 'm':
strcpy(szLog, strdup(optarg));
break;
case 'h':
default:
show_error_message(argv[0]);
exit(1);
}
}
但是,当我printf(“%d”,ch)时,无论我输入什么值,它都会给出值1 'f','B'or'm'...似乎没有区别。你知道为什么 – Lily 2014-10-01 02:56:19
我在你的问题中运行了确切的代码,只是在循环的开头添加了'printf',并看到了不同的数字。当你粘贴它时,你在代码中改变了什么......? – 2014-10-01 03:00:27
嗨马蒂,我再次运行。这样可行!!抱歉! – Lily 2014-10-01 03:13:22