sscanf有没有办法提取两个字符串中间的字符串?

old73 2016-05-09 08:13:11
比如,从
""ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&usession=undefined""
中提取aaaaaaaaaaa

我的正则表达示用(.*name=)%s,连“name=”后面的字符串都取不到。
...全文
1154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
stwin1996 2018-01-31
  • 打赏
  • 举报
回复
如果是"ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&name=asjkfhasjkfh&usession=undefined,我要截取第二次&name=后面的内容,要怎么做啊
stwin1996 2018-01-31
  • 打赏
  • 举报
回复
如果要截取pass=后面的密码要怎么截取啊
old73 2016-05-10
  • 打赏
  • 举报
回复
引用 6 楼 zhao4zhong1 的回复:
char s[]="ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&usession=undefined";
char *p;
char t[40];
p=strstr(s,"&name=");
if (p) if (1==sscanf(p+6,"%39[^&]",t)) printf("name=[%s]\n",t);
谢谢
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
char s[]="ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&usession=undefined";
char t[40];
if (1==sscanf(s,"ttt=%*[^&]&name=%39[^&]",t)) printf("[%s]\n",t);
假正经的班长 2016-05-09
  • 打赏
  • 举报
回复
用毛线正则表达式,直接strstr "&name="就行了
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
char s[]="ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&usession=undefined";
char *p;
char t[40];
p=strstr(s,"&name=");
if (p) if (1==sscanf(p+6,"%39[^&]",t)) printf("name=[%s]\n",t);
old73 2016-05-09
  • 打赏
  • 举报
回复
这样写无法做成通用的取=后面的值的函数 但如果这样写 if (1==sscanf(s,"%*name=%39[^&][^&]",t)) printf("[%s]\n",t); ,name=前面的字符串用什么表示?
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
引用 3 楼 old73 的回复:
[quote=引用 2 楼 zhao4zhong1 的回复:]
char s[]="ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&usession=undefined";
char t[40];
if (1==sscanf(s,"ttt=%*[^&]&name=%39[^&]",t)) printf("[%s]\n",t);
%39是什么意思? [/quote] 限定最多读入39个非&字符。因为t[40],后面还要留一个字节给'\0'
old73 2016-05-09
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
char s[]="ttt=eee&name=aaaaaaaaaaa&pass=bbbbbgbb&usession=undefined";
char t[40];
if (1==sscanf(s,"ttt=%*[^&]&name=%39[^&]",t)) printf("[%s]\n",t);
%39是什么意思?

69,374

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧