期待char *但是char(*)[20]

时间:2013-03-30 17:47:09

标签: c cgi scanf

我正在尝试使用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");

1 个答案:

答案 0 :(得分:3)

if(sscanf(data,"firstName=%[a-z,A-Z]&lastName=%[a-z,A-Z]",
    &firstName, &lastName)!=2) {

您必须传递firstNamelastName而不是&firstName&lastName