判断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里面,该怎么实现?
谢谢!
...全文
2421 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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变量中
内容概要:本文介绍了基于Matlab代码实现的【EI复现】考虑网络动态重构的分布式电源选址定容优化方法,重点研究在电力系统中结合网络动态重构技术进行分布式电源(如光伏、风电等)的最佳位置选择与容量配置的双层优化模型。该方法综合考虑配电网结构变化与电源布局之间的相互影响,通过优化算法实现系统损耗最小、电压稳定性提升及可再生能源消纳能力增强等多重目标。文中提供了完整的Matlab仿真代码与案例验证,便于复现实验结果并拓展应用于微网、储能配置与配电系统重构等相关领域。; 适合人群:电力系统、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源规划与电网优化工作的工程师;具备一定Matlab编程基础和优化理论背景者更佳。; 使用场景及目标:①用于科研论文复现,特别是EI/SCI级别关于分布式能源优化配置的研究;②支【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)撑毕业设计、课题项目中的电源选址定容建模与仿真;③辅助实际电网规划中对分布式发电接入方案的评估与决策; 阅读建议:建议结合提供的网盘资源下载完整代码与工具包(如YALMIP),按照文档目录顺序逐步学习,注重模型构建思路与代码实现细节的对应关系,并尝试在不同测试系统上调试与扩展功能。
本系统采用SpringBoot与Vue技术架构,实现了完整的影院票务管理解决方案,包含后台数据库及全套可执行代码。该系统在高等院校计算机专业毕业设计评审中获得优异评价,特别适用于正在进行毕业课题研究的学生群体,以及需要提升项目实践能力的开发者。同时也可作为课程结业作业或学期综合训练项目使用。 系统提供完整的技术文档和经过全面测试的源代码,所有功能模块均通过多轮调试验证,保证系统稳定性和可执行性。该解决方案可直接应用于毕业设计答辩环节,其技术架构符合现代企业级开发规范,采用前后端分离模式,后端基于SpringBoot框架实现业务逻辑和数据处理,前端通过Vue.js构建用户交互界面。 系统核心功能涵盖影院管理、影片排期、座位预定、票务销售、用户管理等模块,实现了从影片上架到票务核销的完整业务流程。数据库设计遵循第三范式原则,确保数据一致性和完整性。代码结构采用分层架构设计,包含控制器层、服务层、数据访问层等标准组件,便于后续功能扩展和维护。 该项目不仅提供了可直接部署运行的完整程序,还包含详细的技术实现文档,帮助开发者深入理解系统架构设计理念和具体实现细节。对于计算机专业学生而言,通过研究该项目可以掌握企业级应用开发的全流程,包括需求分析、技术选型、系统设计和测试部署等关键环节。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

65,204

社区成员

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

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