Search code examples
cdelimiterstrtok

Find delimiter in strtok()


I am new to C programming. I am trying to split a string using strtok(), using multiple delimiters. The line of code is :

char *token = strtok(st, " +-*/^()");

I want to know at which delimiter it got split. Is it possible? Please help. I mean in this example whether the token got split at space, plus, minus, etc.


Solution

  • The function strtok changes the found delimiter by the zero character '\0'. So it is impossible to determine what delimiter was encountered.

    Instead of the function strtok you can use functions strspn and strcspn. Using these functions you can determine what delimiter was encountered.

    For example

    size_t n = strcspn( st, " +-*/^()" );
    
    if ( st[n] != '\0' )
    {
        switch ( st[n] )
        {
        case ' ':
           //...
           break;
        case '+':
           //...
           break;
        //...
        }
    }