2012-11-29 2 views
5

strtok()을 사용하여 문자열을 구문 분석하려고했습니다. 세미콜론 (;)으로 구분 된 문자열을 구문 분석하려고합니다. 그러나 세미콜론이없는 문자열을 strtok()에 입력하면 전체 문자열이 반환됩니다. 토큰이 일치하지 않으면 NULL을 반환하지 않아야합니까?Strtok(), 토큰 일치 없음

int main(int argc, char** argv) 
{ 
    char cmd[] = "INSERT A->B B->C INSERT C->D"; 
    char delim[] = ";"; 
    char *result = NULL; 

    result = strtok(cmd,delim); 

    if(result == NULL) 
    { 
     printf("\n NO TOKENS\n"); 
    } 
    else 
    { 

     printf("\nWe got something !! %s ",result); 

    } 

    return (EXIT_SUCCESS); 
} 

출력은 다음과 같습니다 :

이 내 코드입니다 우리는 뭔가있어! INSERT A-> B B-> C INSERT C-> D

+6

이 ... 지금은 a와 b

토큰 '토큰 일치가 없으면 NULL을 반환하지 않아야합니까? 'N 전체 문자열은 토큰과 일치합니다. –

+0

';'을 (를) 검색하는 경우 토큰보다는'strchr'을 사용하십시오. – ams

답변

9

아니, 분리 문자는 토큰을 분리하는 것, 그래서 더 구분 기호를, 존재하지 않는 경우 다음 전체 문자열은 첫 번째 토큰

로 간주되는 것을 의미

두 개의 토큰이있는 경우 고려한 다음 해당 토큰 중 하나를 제거하십시오. 당신이 b 빼앗아 경우 다음 당신이있는 경우

a;b

당신이이

a

는 여전히 토큰 a