【发布时间】:2016-04-12 03:22:58
【问题描述】:
我尝试过使用 fgets(username, 20, stdin); fgets(密码,20,标准输入);在将 POST 表单的输入传递给我的 C 程序时接受输入,但它会在用户名值的末尾添加 &... 我该如何解决这个问题?
我想我的问题是:我如何解析用户名和密码的输入,以便我只得到我实际输入到框中的内容而不是一些混乱的字符串?
【问题讨论】:
我尝试过使用 fgets(username, 20, stdin); fgets(密码,20,标准输入);在将 POST 表单的输入传递给我的 C 程序时接受输入,但它会在用户名值的末尾添加 &... 我该如何解决这个问题?
我想我的问题是:我如何解析用户名和密码的输入,以便我只得到我实际输入到框中的内容而不是一些混乱的字符串?
【问题讨论】:
这是因为 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;
}
【讨论】: