sscanf解析uri。

就是使用sscanf解析uri,找不到合适的format。

uri: /abc/efg.html
char * first,*middle,*end;

sscanf(uri,"/%s/%s.%s",first,middle,end);
sscanf(uri,"%*[/]%s%*[/]%s%*[.]%s"first,middle,end);

上面两个format都错误,大家还知道怎么解析吗?还请告知一下。谢谢谢谢。

阅读 3.1k
2 个回答

这个问题是在:
char * uri = "/adb/cde.html";
char begin,middle,*end;
不可以用指针;
char uri[1024] = "/abc/cdf.html";
char begin[128],middle[128],end[128];

sscanf中参数得是数组,不能是指针。
这样就可以了。
至于原因:
我看见了两个sscanf的原型:
int sscanf( string str, string fmt, mixed var1, mixed var2 ... );

int sscanf(const char str, const char format, ...)

可能跟这个有关?我也不清楚,谁要是知道的话,还请讲一下,谢谢。

6.12更新:
因为使用数组,数据是在栈上分配的,而使用指针的话,只有指针自身驻留在栈上,而数据是在可执行文件的只读段

循环解析吧,sscanf(uri, "%[^/]/", node)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进