html - 从 HTML 表单中使用 c 程序获取数据

标签 html c forms

我创建了以下 C 程序来从 HTML 表单中获取数据。但是当我尝试编译并运行它时,我得到:

segmentation fault 11 (core dumped)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    char *N1,*N2,*N3,*N4,*N5;
    int cgi_length;
    char *cgi_data;
    printf("Content-type:text/html\n\n");
    cgi_length=atoi(getenv("CONTENT_LENGTH"));
    cgi_data=malloc(cgi_length+1);
    fread(cgi_data,1,cgi_length,stdin);
    printf("<HTML>");
    printf("<HEAD><TITLE>DATA</TITLE></HEAD><BODY>\n");
    printf("<H3>DATA</H3>\n");
    if(cgi_data == NULL)
    {
        printf("<P>Error! Error in passing data from form to script.");
    }
    else {
        printf("%s",cgi_data);
        sscanf(cgi_data,"N1=%s&N2=%s&N3=%S&N4=%SN5=%s",&N1,&N2,&N3,&N4,&N5);
        printf("<P>N1 is %s and N2 is %s and N3 is %S and N4 is %S and N5 is %s.",N1,N2,N3,N4,N5);
    }
}

另外,如果我使用 ls命令查看 cgi-bin 目录中的数据 我看到创建了一个名为 myprogram.cgi.core 的文件。

谁知道哪里出了问题?

最佳答案

我之前遇到过同样的问题。我在 while 循环中使用了 fgetsfread 对我不起作用。试试这个:

cgi_length=atoi(getenv("CONTENT_LENGTH"));
    cgi_data=malloc(cgi_length+1);
    while(fgets(cgi_data,cgi_length,stdin)!=NULL){
//insert some processing here
}

关于html - 从 HTML 表单中使用 c 程序获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8679733/

相关文章:

c - 使用execvp时如何区分执行情况?

jquery - 改变焦点颜色 改变模糊

javascript - 在 HTML 标题选项卡中传递 AJAX 响应

c - Linux Multicast-Packets 在 4 分钟后干涸

html - 如何从网页中提取图像并保留其显示大小?

c - 如何在 C 语言中访问数组内指针的索引?

javascript - 以漂亮的方式格式化查询参数

php - 使用PHP表单上传PDF到数据库

javascript - 如何使用 JavaScript/jQuery 跟踪 div 滚动到页面上的点

jquery - 在响应式设计中用于宽布局的 Bootstrap 网格