2012-06-24 58 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; 
}