当前位置: 代码迷 >> CGI >> CGI程序中 sscanf 函数的一个数据类型(是什么门类啊)
  详细解决方案

CGI程序中 sscanf 函数的一个数据类型(是什么门类啊)

热度:4774   发布时间:2013-02-26 00:00:00.0
CGI程序中 sscanf 函数的一个数据类型(是什么类型啊)
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就把剩下的串给读完了。
  相关解决方案