1

sscanf を使用して GET リクエストからデータを除外するスクリプトを作成しようとしています。sscanf で解析して変数に渡すのに問題があるようです。問題は私のchar型に関係していると思いますが、私のように「% [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};

また、クエリが変数「データ」に格納され、問題のある文字列の前に宣言されていることも関連していると思います。

char* data;
data = getenv("QUERY_STRING");
4

1 に答える 1

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

and ではなくfirstNameandを渡す必要があります。lastName&firstName&lastName

于 2013-03-30T17:52:30.847 に答える