2012-06-24 4 views
2

내 아이폰에서 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

허. 어머나 나는 느린 타이 퍼야. +1 –

+0

대단히 감사합니다! – Haifisch

0

문제는 논리에 있습니다. argc1 이하인 경우 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; 
}