我们被要求使用HTML,C / CGI和CSS创建登录页面。我想先从基础知识,HTML和C / CGI开始,所以我创建了这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *data;
char *user;
char *password;
printf("Content-type:text/html\r\n\r\n");
printf("<!DOCTYPE html><html><head><title>Welcome!</title></head><body>");
data = getenv("QUERY_STRING");
if (data) {
sscanf(data,"user=%s&password=%s", &user, &password);
printf("Hello Mr./Ms. %s\n",user);
printf("You entered your password %s\n",password);
}
printf("<form action='http://localhost/inch.html'>");
printf("<input type=submit value='Compute'>");
printf("</body></html>");
exit(EXIT_SUCCESS);
}
然而,编译器正在向我展示这个问题:
警告:格式'%s'需要类型为'char *'的参数,但参数为3 有'char **'类型[-Wformat =] sscanf(data,&#34; user =%s&amp; password =%s&#34;,&amp; user,&amp; password);
此外,HTML显示错误500。
有关如何解决此问题的任何想法?我在这个HTML / CGI的事情上相当新,我会很感激帮助。谢谢!
答案 0 :(得分:0)
问题是,sscanf需要一个指向char的指针:
int sscanf ( const char * s, const char * format, ...);
试试这个:
char user[100];
char password[100];
// ...
sscanf(data,"user=%s&password=%s", user, password);