阅读CGI邮政表格

时间:2016-04-12 03:22:58

标签: c post cgi

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

我想我的问题是:如何通过用户名和密码的输入进行解析,这样我才能得到实际输入到框中的内容而不是一些混乱的字符串?

1 个答案:

答案 0 :(得分: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;
}