sscanf解析uri。

查看:115
本文介绍了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都错误,大家还知道怎么解析吗?还请告知一下。谢谢谢谢。

解决方案

这个问题是在:
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。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆