Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5760808
  • 博文数量: 675
  • 博客积分: 20301
  • 博客等级: 上将
  • 技术积分: 7671
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 16:15
文章分类

全部博文(675)

文章存档

2012年(1)

2011年(20)

2010年(14)

2009年(63)

2008年(118)

2007年(141)

2006年(318)

分类: C/C++

2007-01-21 20:42:37

一个C语言的CGI,用来将POST的数据保存到一个文本里面。打算用来作为 嵌入式的Web配置。

#include
#include

#define MAXLEN 80

/* 4个字节留给字段的名字"data", 1个字节留给"=" */
#define MAXINPUT MAXLEN+2
/* 1个字节留给换行符,还有一个留给后面的NULL */
#define DATAFILE "../data.txt"

/* 要被添加数据的文件 */
void unencode(char *src, char *last, char *dest)
{
    for(; src != last; src++, dest++)
        if(*src == '+')
            *dest = ' ';
        else if(*src == '&')
        *dest = '\n';
        else if(*src == '%')
    {
            int code;

            if(sscanf(src+1, "%2x", &code) != 1)
            code = '?';
            *dest = code;
            src +=2;
        }
        else
            *dest = *src;
}

int main(void)
{
    char *lenstr;
    char input[MAXINPUT], data[MAXINPUT];
    int len = 0,i;

    printf("%s%c%c ",
           "Content-Type:text/html;charset=gb2312",13,10);
    printf("< TITLE >Response< /TITLE > ");
    lenstr = getenv("CONTENT_LENGTH");
    sscanf(lenstr,"%d",&len);

    if(lenstr == NULL || len > MAXLEN)
        printf("< P >表单提交错误");
    else
    {
        FILE *f;
        fgets(input, len+1, stdin);
        unencode(input, input+len+1, data);
        f = fopen(DATAFILE, "w");

    /*
    fprintf(f,"%d\n",len);
        fputs(input, f);
    */
        if(f == NULL)
            printf("< P >对不起,意外错误,不能够保存你的数据 ");
        else
            fputs(data, f);
        fclose(f);

        printf("< P >非常感谢,您的数据已经被保存< BR >%s",data);
    }

    return 0;
}

阅读(1676) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~