#include<stdio.h>
#include<stdlib.h>
#include<string.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 delname(char *name)
{
int i;
for(i=0;i<nvtab.nval;i++)
{
if(strcmp(nvtab.nameval[i].name,name)==0)
{
memmove(nvtab.nameval+i,nvtab.nameval+i+1,(nvtab.nval-(i+1))*sizeof(Nameval));
nvtab.nval--;
return 1;
}
}
return 0;
}
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);
if(delname("aeli")==1)
{
printf("%d,%d,%s\n",nvtab.nval,nvtab.max,nvtab.nameval[nvtab.nval-1].name);
}
else
{
printf("found no aeli in the array\n");
}
if(delname("aelig")==1)
{
printf("%d,%d,%s\n",nvtab.nval,nvtab.max,nvtab.nameval[nvtab.nval-1].name);
}
else
{
printf("found no aeliy in the array\n");
}
return 0;
}
memmove
最新推荐文章于 2025-04-20 23:05:09 发布