gorwable array

来源:互联网 发布:金太阳教育软件下载 编辑:程序博客网 时间:2024/05/16 07:56
#include<stdio.h>#include<stdlib.h>typedef struct Nameval Nameval;struct Nameval{    char *name;    int value;};struct NVtab{    int nval;    int max;    Nameval *nameval;}nvtab;enum{NVINIT=1,NVGROW=2};int addname(Nameval newname){    Nameval *nvp;    if(nvtab.nameval==NULL)    {        nvtab.nameval=(Nameval*)malloc(NVINIT*sizeof(Nameval));        if(nvtab.nameval==NULL)            return -1;        nvtab.max=NVINIT;        nvtab.nval=0;    }    else if(nvtab.nval>=nvtab.max)    {        nvp=(Nameval*)realloc(nvtab.nameval,(NVGROW*nvtab.max)*sizeof(Nameval));        if(nvp==NULL)return -1;        nvtab.max*=NVGROW;        nvtab.nameval=nvp;    }    nvtab.nameval[nvtab.nval]=newname;    return nvtab.nval++;}int main(int argc,char *argv[]){    Nameval htmlchar1=    {        "aelig",0x00c6,    };    Nameval htmlchar2=    {        "aacute",0x00c1,    };    Nameval htmlchar3=    {        "acirc",0x00c2,    };    addname(htmlchar1);    printf("%d,%d,%s\n",nvtab.nval,nvtab.max,nvtab.nameval[nvtab.nval-1].name);    addname(htmlchar2);    printf("%d,%d,%s\n",nvtab.nval,nvtab.max,nvtab.nameval[nvtab.nval-1].name);    addname(htmlchar3);    printf("%d,%d,%s\n",nvtab.nval,nvtab.max,nvtab.nameval[nvtab.nval-1].name);    return 0;}

原创粉丝点击