我正在尝试使用sscanf编写除GET请求数据之外的脚本。我似乎遇到了用sscanf解析它并将其传递给变量的问题。我认为这个问题与我的char类型有关,但也可能与我的Regex字符串有关,因为错误使组成为“%[az,AZ”而不是“%[az,AZ]”就像我一样期待它。你可以在http://cs.mcgill.ca/~phwang3/cgi-bin/searchRecord.c看到完整的源代码,但我在这里突出了主要内容。
我似乎收到了错误
warning: format ‘%[a-z,A-Z’ expects argument of type ‘char *’, but argument 3 has type ‘char * (*)[20]’ [-Wformat]
在这一行
if(sscanf(data,"firstName=%[a-z,A-Z]&lastName=%[a-z,A-Z]",&firstName, &lastName)!=2) {
有问题的变量在上一行之前声明为
char firstName[20] = {0};
char lastName[20] = {0};
我认为也是相关的,即查询存储在变量“data”中,并且也在poblematic字符串之前声明。
char* data;
data = getenv("QUERY_STRING");
答案 0 :(得分:3)
if(sscanf(data,"firstName=%[a-z,A-Z]&lastName=%[a-z,A-Z]",
&firstName, &lastName)!=2) {
您必须传递firstName
和lastName
而不是&firstName
和&lastName
。