char *msg = NULL, *errmsg = NULL;
const char *mac_address;
char filename[50] = {0}, index_name[30] = {0}, device_id[18] = {0}, user_id[50] = {0}, sql_where[100] = {0}, filepath[FILE_PATH]={0}, sql_cmd[200] = {0}, md5_user[35] = {0}, os[8] = {0};
sqlite3 *db = NULL;
int rc = 0, auth = 0, album = 0
sscanf(msg, "pic=%[^&]&album=%d&index_name=%[^&]&user_id=%[^&]&device_id=%s", filename, &album, index_name, user_id, device_id);
最近看到CGI程序,不明白 上例中 sscanf 中 “%[^&]”是什么格式,希望得到大家的指点,谢谢
------解决方案--------------------------------------------------------
从buffer里面读取到指定&为止的字符串,[^&]类似正则
比如
#include <iostream>
#include<cstdio>
int main()
{
const char* b= "asd&vc";
char a[10] = "";
sscanf(b, "%[^&]", a);
std::cout<<a<<std::endl;
return 0;
}
最后a就是asd
------解决方案--------------------------------------------------------
pic=%[^&]&album=%d&index_name=%[^&]&user_id=%[^&]&device_id=%s
这一坨就是为了把传过来的参数挨个的读取出来,因为参数是以&为间隔,所以第一个参数会读到第一个&停止,以此类推,最后一个%s就把剩下的串给读完了。