2012-11-29 12 views
5

मैं strtok() का उपयोग कर तारों का विश्लेषण करने की कोशिश कर रहा था; मैं अर्धविराम (;) द्वारा सीमित तारों को पार्स करने की कोशिश कर रहा हूं। लेकिन जब मैं strtok() पर अर्धविराम के साथ एक स्ट्रिंग इनपुट करता हूं, तो यह पूरी स्ट्रिंग देता है। यदि कोई टोकन मैचों नहीं हैं तो NULL वापस नहीं आना चाहिए?स्ट्रेटोक(), कोई टोकन मैच

यह मेरा कोड है:

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

उत्पादन होता है: हम कुछ हो गया है !! सम्मिलित करें A-> बी बी> सी सम्मिलित सी> डी

+6

है यदि कोई टोकन मैचों नहीं हैं तो क्या यह न्यूल वापस नहीं आना चाहिए? ओ। पूरी स्ट्रिंग एक टोकन मैच है। –

+0

यदि आप ';' खोज रहे हैं टोकन के बजाए, 'strchr' आज़माएं। – ams

उत्तर

9

नहीं है, सीमांकक मतलब है कि यह बात यह है कि टोकन अलग करती है, तो अगर कोई सीमांकक है, तो पूरी स्ट्रिंग पहले टोकन

माना जाता है

पर विचार करें कि आपके पास दो टोकन हैं, तो उन टोकन में से एक को दूर ले जाएं। यदि आपके पास

a;b

तो आप अब ए और बी

टोकन यदि आप b दूर ले ...

a

आप अभी भी टोकन a

संबंधित मुद्दे