编辑代码

#include"stdio.h"

//strtokmethod.h  start
#ifndef __strtokmethod_h__
#define __strtokmethod_h__

#include "stdio.h"
#include "stdarg.h"
#include "string.h"

typedef struct
{
    char method[20];
    char arg0[20];
    char arg1[20];
    char arg2[20];
	  char arg3[20];
	  char arg4[20];
} StrtokMethodTypeDef;

StrtokMethodTypeDef strtokParseMethodByteArr(char *input);
StrtokMethodTypeDef strtokParseMethodStr(const char *str);

#endif 
//strtokmethod.h  end



//strtokmethod.c  start

StrtokMethodTypeDef strtokParseMethodByteArr(char *input)
{
    StrtokMethodTypeDef srtd;
	  srtd.arg0[0]='_';
	  srtd.arg1[0]='_';
	  srtd.arg2[0]='_';
	  srtd.arg3[0]='_';
	  srtd.arg4[0]='_';
    const char s[4] = "(,)";
    char *token;
    /* 获取第一个子字符串 */
    token = strtok(input, s);
    /* 继续获取其他的子字符串 */
    int i = 0;
    while (token != NULL)
    {
        // printf( "%s\n", token );
        if (i == 0)
        {
            sprintf(srtd.method, "%s", token);
        }
        if (i == 1)
        {
            sprintf(srtd.arg0, "%s", token);
        }
        if (i == 2)
        {
            sprintf(srtd.arg1, "%s", token);
        }
        if (i == 3)
        {
            sprintf(srtd.arg2, "%s", token);
        }
				if (i == 4)
        {
            sprintf(srtd.arg3, "%s", token);
        }
				if (i == 5)
        {
            sprintf(srtd.arg4, "%s", token);
        }
        token = strtok(NULL, s);
        i++;
    }
    return srtd;
}

StrtokMethodTypeDef strtokParseMethodStr(const char *str)
{
    StrtokMethodTypeDef srtd;
    static char input[40] = {0};
    strcpy(input, str);
    return strtokParseMethodByteArr(input);
}

//strtokmethod.c  end




int main()
{
	StrtokMethodTypeDef r = strtokParseMethodStr("s(1,8)");
	printf("%s@%s,%s", r.method,r.arg0,r.arg1);
	return 0;
}