검 타사 라이브러리를 도입

/ * 문자 인코딩 얻기 * / 

#INCLUDE <STDIO.H> 
#INCLUDE <stdlib.h>   / * 은 calloc () 함수 헤더 * / 
#INCLUDE < 문자열 .H> 
#INCLUDE <assert.h를> 
사용법 #include " uchardet. H " 

무효 시험 () 
{ 
    UD uchardet_t; 
    const를  문자 * P = " 시작과 금성이 실제로 자매 행성 지구입니다. " ;
     const를  문자 * pcCode = NULL; 

    DO  
    { 
        // 1. 초기화 
        UD = uchardet_new (); 

        / / 2. 시료 분석 문자열
        IF (가 uchardet_handle_data (UD, P, 나 strlen (P))) 
        { 
            의 printf ( " --- uchardet_handle_data () ---- \ N- 실패 " )
             BREAK를 ; 
        } 

        // 3. 닫기 샘플 분석 
        uchardet_data_end (UD) 

        / / 4. 인쇄 문자열 인코딩 
        pcCode = uchardet_get_charset (UD)
         IF (pcCode) 
        { 
            인 printf ( " ------ 현재 코드 ----------------------- \ [%의 S]는 N- " , pcCode); 
        } 
        다른 
        { 
            의 printf ( " --- uchardet_get_charset은 () \ N- ---- 실패 "); 
        } 

    } 그동안 ( 0 ); 

    // 제 폐쇄 자원 
    uchardet_delete (UD)] 

} 

INT 의 main () 
{ 
    테스트 (); 
    반환  0 ; 
}
/ * 커맨드 라인 파라미터 파싱 * / 

#INCLUDE <STDIO.H> 
#INCLUDE <stdlib.h>   / * 은 calloc () 함수 헤더 * / 
#INCLUDE < 문자열 .H> 
#INCLUDE <assert.h를> 
#INCLUDE <unistd .H> 
#INCLUDE <getopt.h> / * 
기술 보충 : 
    A. 명령 라인 파라미터 
        커맨드 라인 파라미터는 두 개의 카테고리로 분할 될 수 있고, 하나의 옵션은 단 하나 개의 긴 옵션 짧은 옵션 플러스 파라미터 앞의 모음이며 "-"플러스 개의 바 긴 옵션 연속 매개 변수 앞에 "-" 
        예를 들어, -a, 짧은 옵션 말했다 -b -A, - 모두가 - 거의 모두 , --author 긴 옵션을 표명했다. 
        나중에 둘 다 선택적으로 추가 매개 변수를 추가 할 수 있습니다. 예 --block 크기 = SIZE를 들어, 크기는 추가 매개 변수이다. 
    B.getopt_long 기능 소개



 
        함수 프로토 타입을
        INT getopt_long는 (INT는 argc, 숯 *의 []는 argv CONST, CONST 숯 *의 optstring이, CONST 구조체 옵션 * longopts 안의, INT * longindex) 

        기능 설명 : getopt_long는 기능을 처리 할 수있는 양 짧은 옵션은 긴 옵션 처리 할 수있는 

        변수 설명 
        ARGC을 : 메인으로 는 argc의 () 함수 
        는 argv :의 주 () ARGV 기능 
        optstring이 : 짧은 옵션 문자열. 
            "B : CD :에"등의 양식은 , 각각 쇼트 프로그램은 콜론 다음과 같은 의미 명령 줄 옵션입니다 -a, -b, -c, -d 지원 
                (1) 단 하나 개의 문자가 콜론없이를 - 이러한 -C로만 옵션을 도시하는  
                옵션 파라미터 밴드 같은 100 -a 나타낸다 후 - (2) 캐릭터, 콜론 하였다 
                . (3) 캐릭터 개의 콜론 다음 - 선택 가능한 옵션을 다음과 같은 것을 나타낸다 파라미터는 선택적 파라미터 즉, 파라미터 경우, 옵션 파라미터 공간 직접 -b200 같은 형태 일 수 
        longopts 안의 : 긴 옵션 구조를 나타내는 

        구조체 옵션 
        { 
            CONST CHAR * 이름; 
            INT has_arg, 
            플래그 INT *;
            INT 발;  
              { "
        }; 

        예 : 
        정적 구조체 옵션 longopts 안의은 [] = { 
              {no_argument, NULL, 'D'} "디먼에" 
              { "DIR"required_argument, NULL, 'D'}, 
              { "OUT", required_argument, 'O', NULL }, 
              {required_argument, NULL, 'L'}, "로그" 
              { "분할"required_argument, NULL, 'S'}, 
              { "HTTP 프록시"required_argument, lopt, 1}, 
              { "HTTP 사용자" , required_argument, lopt, 2}, 
              { "HTTP-passwd를"required_argument, lopt, 3}, 
              { "HTTP 프록시-passwd를"required_argument,
              { "버전", no_argument는, NULL, 'V'}, 
              { "도움말", no_argument는, NULL, 'H'는}, 
              {0, 0, 0, 0} 
        } 
        이름 : 예 데몬, 디렉토리에 대한 옵션의 이름을 나타냅니다 밖으로 등등. 

        has_arg : 옵션 매개 변수를 다시 수행 할 수 있는지 여부를 나타냅니다. 
        다음과 같이 매개 변수는, 세 가지의 값을 갖는다 : 
        A : 때 no_argument (제로)이 아닌 파라미터 값, EG와 파라미터 후 : --version - 도움말 
        B : required_argument (또는 1), 입력 변수, 형식 : (파라미터 값), 또는 (= 파라미터 값). EG - 디렉터리 = / 홈 
        C : optional_argument는 (2)만을 입력 파라미터 포맷 인 경우 : 변수 값 = 

        플래그 :이 파라미터는 비어 있거나 비어 개의 값을 갖는다. 
        A : 인수 후 오랜 시간이 옵션에서 선출 널 NULL 인 경우, getopt_long는 브로 값을 반환합니다. 예를 들어, 실행 --help, getopt_long는 반환 값의 시간.     
        B : 매개 변수가 비어 있지 않은 경우, 반환 getopt_long는 0을, 긴 시간 옵션에 선출와 val의 값 플래그 포인터 매개 변수를 가리 킵니다. 
예 : 실행 --http 프록시 = 127.0.0.1 80 getopt_long는은 0, 1, lopt 값의 값을 반환한다. 발 : 지정된 함수는 지정된 값 발 플래그 데이터 비어 있지 않은 플래그로 찾을 수있는 옵션이나 점의 값을 반환하는 것을 나타냅니다. longindex : 비어 longindex, 그것은 여러 요소, 즉, 지표 값 longopts 안의의 설명에서 발견 longopts 안의 라인에 전류 가변 파라미터들의 레코드를 가리킨다. 반환 값 : 짧은 옵션이 발견되면 다음 (1) 해당 짧은 옵션 문자를 반환합니다. (2) 플래그가 NULL 인 경우 긴 옵션을 찾을 경우, 발을 반환합니다. 플래그가 비어 있지 않으면 0을 반환 당신이 발생하는 경우 (3) 옵션이있는 자 문자의 짧은 없습니다. 또는 반환 긴 문자에 모호함이 '?' 해상도가 모든 문자 이후에 발견되지 않는 경우 (4) : '리턴 (일반적으로 명령 매개 변수 형식 오류를 입력, 예를 들어도 플러스 옵션을 슬래시하지 않음) -1 ' 옵션 인수를 필요로하는 경우 (5), 당신은 매개 변수를 추가하는 것을 잊었다. 그 첫 번째 문자 인 경우 반환 값은, optstring이를 따라 ':'반환 '' '', 그렇지? 참고 그렇지 않으면 오류 세그먼트보고, 마지막 요소가 완전히 0으로 채워해야 longopts 안의을 각 옵션은 고유 짧은 옵션을. 짧은 긴 옵션은 고유해야하는 경우. 글로벌 변수의 C. 설명 OPTARG : 옵션을 해당 현재 매개 변수 값을 나타냅니다. OPTIND : 그것은 ARGV의 인덱스의 값을 처리 할 다음의 파라미터를 나타낸다. OPTERR : OPTERR = 0, getopt에에서 getopt_long는, getopt_long_only 오류가 발생하면 것이다 표준 출력 스트림없는 오류 메시지를 출력. OPTERR 때 비 - 제로 화면에 에러 출력. optopt :
* / INT lopt = 0 ; 정적 CONST의 구조체 옵션 long_options [] = { { " 디먼에 " , no_argument은 NULL, " D는 ' }, { " 로그 " , required_argument, NULL, ' L ' }, { " HTTP 프록시 " , required_argument, NULL, " P ' }, { " 버전 " , no_argument, NULL, ' }, { " 도움 " , no_argument, NULL, ' 시간 ' }, { 0 , 0 , 0 , 0 } }; 정적 무효 사용량 ( 무효 ) { fprintf와 (표준 오류, " 테스트 [옵션] ... URL \ 없음 " " -2 프로그램을 죽일 수 있습니다. \ n " " --daemon 사용 GET 요청 데몬을합니다. \ n " " --log를 사용하여 로그인 옵션을 합니다. \ n " "" " -h |이 정보 --help합니다. \ n " " -V | --version 디스플레이 프로그램 버전합니다. \ n " ); }; 무효 show_version () { printf와 ( " ==== 버전 [1.1.0] ==== \ n " ); } 무효 show_help () { printf와 ( 내가 당신을 도울 것입니다,하지만 난 집에 지금은 아닙니다 ^ _ ^합니다. \ n " ); } 공극 시험 ( 의 INT 는 argc, 문자 ** ARGV) { INT의 옵트 = 0 ; INT options_index = " 0 ; 경우 ( 1 ==의 ARGC) { 사용량 (); 반환 ; } 동안 ((옵트 = getopt_long는 (는 argc, argv를, " 2Vhp : " , long_options, options_index))! = EOF) { // 短选项处理 스위치 (옵트) { 경우 0 : 휴식 ; 경우 ' 2 ' : printf와 ( " 내가 지금 출구 생각합니다. \ n " ); 휴식 ; 케이스 ' V ' : show_version (); 휴식 ; 경우에 ' L ' : 의 printf ( " 나는 오픈 로그 옵션 [%의 S]이다 \ n. " , OPTARG); 휴식 ; 케이스 ' H ' : show_help (); 휴식 ; 경우 ' P ' : 인 printf ( " HTTP 프록시는 [%의 (S)]는 \ n. " , OPTARG); 휴식 ; 기본값 : 사용 (); 휴식 ; } } 경우 (OPTIND < ARGC) { 사용량 (); (printf와 " ! getopt_long는 () 오류 \ n " ); } } INT 본체 ( 의 INT 는 argc, *의 는 argv []) { 테스트 (는 argc, ARGV); 반환 0 ; }

 

추천

출처www.cnblogs.com/zhanggaofeng/p/11666063.html