2012-11-29 39 views
5

Tôi đang cố gắng phân tích chuỗi bằng cách sử dụng strtok(); Tôi đang cố gắng phân tích các chuỗi được phân định bằng dấu chấm phẩy (;). Nhưng khi tôi nhập một chuỗi không có dấu chấm phẩy vào strtok(), nó sẽ trả về toàn bộ chuỗi. Không nên trả lại NULL nếu không có kết quả khớp mã thông báo?Strtok(), không khớp với mã thông báo

Đây là mã của tôi:

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); 
} 

Đầu ra là: Chúng tôi đã nhận một cái gì đó !! INSERT A-> B B-> C INSERT C-> D

+6

'không được trả về NULL nếu không có kết quả khớp token nào?' N o Toàn bộ chuỗi là một kết hợp mã thông báo. –

+0

Nếu bạn đang tìm kiếm ';' thay vì mã thông báo, hãy thử 'strchr'. – ams

Trả lời

9

Không, delimiter có nghĩa rằng đó là điều mà tách thẻ, vì vậy nếu không có delimiters, sau đó toàn bộ chuỗi được coi là người đầu tiên thẻ

xem xét nếu bạn có hai thẻ, sau đó lấy một trong những thẻ đó đi. nếu bạn có

a;b

sau đó bạn có mã thông báo a và b

bây giờ nếu bạn mất b đi ...

a

bạn vẫn có dấu hiệu a

Các vấn đề liên quan