2012-06-24 89 views
2

當我在我的iphone上運行我的CLI程序時,出現段錯誤:11錯誤。我不知道該怎麼辦,我是菜鳥,在C.段錯誤iPhone可執行文件

int main (int argc, const char * argv[]) 
{ 
if (argc > 1 && (!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h"))) { 

    printf("#### redhai 1.2 ####\n"); 
    printf("-j Jailbreak\n"); 
    printf("-i Device info\n"); 
    printf("-a About\n"); 
    printf("*END OF HELP*\n"); 
    printf("####################\n"); 
    return 0; 
}else if (!strcmp(argv[1],"-j")) { 
    printf("Coding the jailbreak portion!\n"); 
    return 0; 
} 
return 0; 
} 

回答

3

您正在訪問argv[1]沒有檢查,如果它的存在。您需要先檢查argc > 1

} else if (argc > 1 && !strcmp(argv[1],"-j")) { 
//   ^^^^^^^^^^^^ 
+0

呵呵。天哪,我是一個緩慢的typer。 +1 – 2012-06-24 00:56:33

+0

非常感謝! – Haifisch

0

問題出在邏輯上。如果argc小於或等於1,則可能通過NULLstrcmp。爲了解決這個問題,重新訂購支票是這樣的:

int main (int argc, const char * argv[]) 
{ 
    if (argc > 1) { 
     if (!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h")) { 
      printf("#### redhai 1.2 ####\n"); 
      printf("-j Jailbreak\n"); 
      printf("-i Device info\n"); 
      printf("-a About\n"); 
      printf("*END OF HELP*\n"); 
      printf("####################\n"); 
     } else if (!strcmp(argv[1],"-j")) { 
      printf("Coding the jailbreak portion!\n"); 
     } 
    } 
    return 0; 
}