您的位置:首页 > 编程语言 > C语言/C++

C语言字符串处理的一个例子

2011-03-10 16:52 239 查看
char **getvars()
{
int i;
int content_length;
char **postvars;
char *postinput;
char **pairlist;
int paircount = 0;
char *nvpair;
char *eqpos;

postinput = getenv("CONTENT_LENGTH");
if (!postinput)
exit(1);
if(!(content_length = atoi(postinput)))
exit(1);
if(!(postinput = (char *) malloc(content_length+1)))
exit(1);
if (!fread(postinput, content_length, 1, stdin))
exit(1);
postinput[content_length] = '/0';


for(i=0;postinput[i];i++)
if(postinput[i] == '+')
postinput[i] = ' ';

pairlist = (char **) malloc(256*sizeof(char **));
paircount = 0;
nvpair = strtok(postinput, "&");
while (nvpair)
{
pairlist[paircount++] = strdup(nvpair);
if(!(paircount%256))
pairlist = (char **) realloc(pairlist, (paircount+256)*sizeof(char **));
nvpair = strtok(NULL, "&");
}
n=paircount*2+1;
pairlist[paircount] = 0;
postvars = (char **) malloc((paircount*2+1)*sizeof(char **));
for(i = 0;i<paircount;i++)
{
eqpos = strchr(pairlist[i], '=');
if(eqpos)
{
*eqpos= '/0';
unescape_url(postvars[i*2+1] = strdup(eqpos+1));
} else
{
unescape_url(postvars[i*2+1] = strdup(""));
}
unescape_url(postvars[i*2]= strdup(pairlist[i]));
}
postvars[paircount*2] = 0;

for(i=0;pairlist[i];i++)
free(pairlist[i]);
free(pairlist);
free(postinput);

return postvars;
}



其中strtok() 、realloc()函数的精美实用,使得这个对字符串的处理变得非常的简单……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐