sscanf解析uri。
本文介绍了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屋!
查看全文