判断char*里是否包含某子字符串,取char*部分字符串存储的问题

xveseyanling 2008-02-29 10:29:39
char* a_cpTest = "[HEAD]{{filename=xxx.txt},{filesize=123456}}[LIST:FILES]{{filename=YYY.txt},{filesize=123456}};{{filename=xxx.txt},{filesize=123456}}";

char temp1[256];
char temp2[256];

请问我如何判断a_cpTest里是否包含filename字符串?是用strstr()?
如果要把a_cpTest里面第一个filename后面=后面的文件名xxx.txt存到temp1里面,
把第二个filename后面的YYY.txt存到temp2里面,该怎么实现?
谢谢!
...全文
1118 10 打赏 收藏 转发到动态 举报
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-02-29
  • 打赏
  • 举报
回复
char *p1, *p2;
p2 = a_cpTest;

while(TRUE)
{
p1 = strstr(p2, "{filename=");
if (p1 = NULL) break;
p2 = strchr(p1, '}');
memcpy(...
}
Supper_Jerry 2008-02-29
  • 打赏
  • 举报
回复
气死我了。。
Supper_Jerry 2008-02-29
  • 打赏
  • 举报
回复
慢了。。就调试了一会,被人抢了。。。唉
我的可以直接运行,结果争取的。
Supper_Jerry 2008-02-29
  • 打赏
  • 举报
回复
void main()
{
char temp2[256] = {0};
char* a_cpTest = "[HEAD]{{filename=xxx.txt},{filesize=123456}}[LIST:FILES]{{filename=YYY.txt},{filesize=123456}};{{filename=xxx.txt},{filesize=123456}}";
char* p = a_cpTest;
int count(0);
while(1)
{
p = strstr(p, "filename=");
if(p)
{
char* pIn = strchr(p, '=');
if(pIn)
{
char *pO = strchr(pIn+1, '}');
if(pO)
{
if(count == 0)
{
memcpy(temp1, pIn + 1, pO - pIn - 1);
count ++;
p = pO;
}
else
{
memcpy(temp2, pIn + 1, pO - pIn - 1);
count ++;
break;
}
}
}
}
}
}
ryfdizuo 2008-02-29
  • 打赏
  • 举报
回复
找到filename的位置以后,就可以和快的读取出=后面的文件名了,
xveseyanling 2008-02-29
  • 打赏
  • 举报
回复
谢谢您了!
万分感谢!
ryfdizuo 2008-02-29
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
char* a_cpTest="[HEAD]{{filename=xxx.txt},{}filesize=123456}}[LIST:FILES]{{filename=YYY.txt},";
char* str="filename";
char temp1[256];
char temp2[256];

char *pdest1, *pdest2;
int result1, result2;
printf( "String to be searched:\n\t%s\n", a_cpTest );

pdest1 = strstr( a_cpTest, str );
result1 = pdest1 - a_cpTest + 1;
if( pdest1 != NULL )
printf( "%s found at position %d\n\n", str, result1 );
else
printf( "%s not found\n", str );

pdest2 = strstr( a_cpTest+result1, str );
result2 = pdest2 - a_cpTest + 1;
if( pdest2 != NULL )
printf( "%s found at position %d\n\n", str, result2 );
else
printf( "%s not found\n", str );

return 0;
}
xveseyanling 2008-02-29
  • 打赏
  • 举报
回复
楼上的达人
这个循环怎么循环到下一个filename?
该怎么写啊?谢谢!
shaoze5 2008-02-29
  • 打赏
  • 举报
回复
int strcspn(char *str1, char *str2);
char *strstr(char *str1, char *str2);
利用两个函数的返回值,循环处理,就可以了吧。
wenjun1130 2008-02-29
  • 打赏
  • 举报
回复
用strcmp();从第9个字符开始比较,
取xxx.txt,用循环,取第一个‘=’和‘.’之间的部分存到temp变量中
相关推荐

63,594

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下