【问题标题】:Reading from CGI Post Form从 CGI 帖子表单中读取
【发布时间】:2016-04-12 03:22:58
【问题描述】:

我尝试过使用 fgets(username, 20, stdin); fgets(密码,20,标准输入);在将 POST 表单的输入传递给我的 C 程序时接受输入,但它会在用户名值的末尾添加 &... 我该如何解决这个问题?

我想我的问题是:我如何解析用户名和密码的输入,以便我只得到我实际输入到框中的内容而不是一些混乱的字符串?

【问题讨论】:

    标签: c post cgi


    【解决方案1】:

    这是因为 fgets 将从流中获取多达 19 个字符,在您的情况下,它不会停在换行符或“&”处。您可以尝试使用 sscanf 进行格式化输入,如下所示:

    #include <stdio.h>
    
    int main(void) {
        char *form = "user=foo&password=bar";
    
        char user[32];
        char passwd[32];
    
        int ret = sscanf(form, "user=%[^&]&password=%[^&]", user, passwd);
        if (ret != 2) {
            fprintf(stderr, "invalid form\n");
            return 0;
        }
    
        printf("user is %s, passwd is %s\n", user, passwd);
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多