函数数组demo

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

typedef int(*service_func)(char *,char *);

struct service_fun{
    char *serviceName;
    service_func func;     
};

int who_am_i(char *request,char *response)
{
    printf("you request:%s\n",request);
    strcpy(response,"i am lewy");
    return 0;
}

struct service_fun serviceMap[]={
    {"tellyourname",who_am_i},
    {NULL,NULL}
};

int get_service_name(char *requestStr,char *serviceName)
{
    memcpy(serviceName,requestStr,12);
    return 0;
}

int main()
{
    printf("service start\n");
    int i=0;
    char *request="tellyourname:data1234567890";
    char serviceName[13]={0};
    get_service_name(request,serviceName);

    char response[100];

    while(NULL != serviceMap[i].serviceName)
    {
        if(0 == strcmp(serviceMap[i].serviceName,serviceName))
        {
            return serviceMap[i].func(request,response);
        }
        i++;
    }
    
    printf("no service for your request\n");
    
    return 0;
}


收藏于 2013-11-12

posted on 2015-06-01 15:29  阮減显  阅读(68)  评论(0)    收藏  举报

导航