2015年8月7日 星期五

[C] Example - strtok_r


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void ExtractTokens(char string[], int num, char *User, char *Password)
{
    char *str1, *str2, *token, *subtoken;
    char *saveptr1, *saveptr2;
    int j, k;

    for (j = 0, str1 = string; ; j++, str1 = NULL) {
        token = strtok_r(str1, "<", &saveptr1);
        if (token == NULL)
            break;
        if (j == num)
        {
            for (k = 0, str2 = token; ;k++, str2 = NULL) {
                subtoken = strtok_r(str2, ">", &saveptr2);
                if (subtoken == NULL)
                    break;
                switch(k)
                {
                    case 0:
                        strcpy(User, subtoken);
                        break;
                    case 1:
                        strcpy(Password, subtoken);
                        break;
                }
            }
            printf("ExtractTokens - User = %s, Password = %s \n", User, Password);
            break;
        }
    }
}



int main(void)
{
    int i = 0;
    char test[]="<ha>ha<Go>Go<Ya>Ya<La>La";
    char test1[]="<ha>ha<Go>Go<Ya>Ya<La>La";
    char User[128] = {'\0'};
    char Password[128] = {'\0'};


    for (i = 0; i < 4; i++ )
    {
        strcpy(test,test1);
        ExtractTokens(test, i, User, Password);
        printf("User = %s, Password = %s \n", User, Password);
    }

}

Result
ExtractTokens - User = ha, Password = ha 
User = ha, Password = ha 
ExtractTokens - User = Go, Password = Go 
User = Go, Password = Go 
ExtractTokens - User = Ya, Password = Ya 
User = Ya, Password = Ya 
ExtractTokens - User = La, Password = La 
User = La, Password = La 

Reference:

0 意見:

張貼留言