c·c++/c 프로그래밍

strtok source

바로이순간 2012. 12. 2. 12:56

#include <stdio.h>

char * myStrtok(char *s1, char *delim) {

    static char *lastToken = NULL; 

    char *tmp, *x, *s;


    /* Skip leading delimiters if new string. */

    if ( s1 == NULL ) {

        s1 = lastToken;

        if (s1 == NULL)         /* End of story? */

            return NULL;

    } else {

        for(s=s1;*s!=0;s++) { 

            for(x=delim;*x!=0;x++)

                if(*s==*x) break;

            if(*x==0) break;

        }

        s1=s;

    }


    /* Find end of segment */

    for (s=s1; *s!=0; s++) {

        for (x = delim; *x!=0; x++)

            if (*s == *x) break;

        if(*x!=0) break;

    }

    if(*x!=0) tmp=s;

    else tmp= NULL;


    if (tmp) {

        /* Found another delimiter, split string and save state. */

        *tmp = '\0';

        lastToken = tmp + 1;

    } else {

        /* Last segment, remember that. */

        lastToken = NULL;

    }


    return s1;

}

int main() {

    char line[100];

    char *p;

    gets(line);

    p=myStrtok(line, ", ");

    while(p) {

        printf("%s\n", p);

        p=myStrtok(NULL, ", ");

    }

    return 0;

}