我有一個關於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