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()函数的精美实用,使得这个对字符串的处理变得非常的简单……
{
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()函数的精美实用,使得这个对字符串的处理变得非常的简单……
相关文章推荐
- 编写一个删除C语言源程序中的所有注释语句,要正确处理带引号的字符串和字符常量。
- C语言:字符串处理4例子
- 一个python文档字符串处理小例子
- c语言一个处理文本文件的例子
- 【1-23】编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。再c语言中,注释不允许嵌套。
- C++字符串处理的一个例子:1.查找一个字符在字符串中第n次出现的位置。2分割字符串
- 一个很有用的字符串处理的头文件(在程序的容错中特别有用)
- C语言中的string.h中的内存字符串处理函数
- Strsafe.h:更安全的C语言字符串处理函数
- C语言字符串处理函数
- OpenJudge百炼-2799-浮点数格式-C语言-字符串处理
- C语言 南阳理工ACM 277 车牌号(对字符串处理函数的运用)
- 【C语言】10-字符和字符串常用处理函数
- 002_010 Python 处理字符串中的Zip文件 你的程序收到了一个字符串,内容是一个ZIP文件,需要读取zip文件的信息
- C语言中字符串赋值处理方式
- 一些c语言字符串处理
- 【c语言】用递归法将一个整数n转换成字符串
- 编写函数,其功能是:将一个数字字符串转换为一个整数(不得调用C语言中提供的将字符串转换成整数的函数。)要求在主函数中输入该字符串并输出转换后的整数的值。
- ASP中一个字符串处理类加强版
- C语言:实现一个函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中