请教各位大神,有没有更好的方法代替strtok()

zhuwenqiang0316 2013-05-13 09:19:17
#define MAX 80

File *fpa,*fpb;

int chodp()
{
FILE *ftemp;
int i,flag;
char elenum[MAX],*s0,*s1,*s2,*s3,*s4,*s5,*s6,*s7,s[4][MAX];
fprintf(fpb,"===========================================================================\n");
fprintf(fpb,"检查计费指针是否变化(CHODP:FN=ALL)\n");
rewind(fpa);
while (!feof(fpa))
{
fgets(buf,MAX,fpa);
if(strstr(buf,"*** Connected to")!=NULL)
{
strcpy(buf2,buf);
s1=strtok(buf," "); //慎用strtok函数,慎用!容易出现问题
for(i=0;i<3;i++)
s1=strtok(NULL," ");
strcpy(elenum,s1);
strcpy(buf,buf2);
}
while(strstr(buf,"COMMON CHARGING OUTPUT CHARGEABLE DURATION DATA")!=NULL) //找到特征字符,开始
{
flag=0;
for(i=0;i<3;i++)
fgets(s1,MAX,fpa);
for(i=0;i<2;i++)
fgets(s[i],MAX,fpa);
for(i=0;i<3;i++)
fgets(s1,MAX,fpa);
ftemp=fpa;
fgets(s2,MAX,fpa);
fgets(s3,MAX,fpa);
if(strstr(s1,"<CHODP:FN=ALL;")==NULL&&strstr(s2,"<CHODP:FN=ALL;")==NULL&&strstr(s3,"<CHODP:FN=ALL;")==NULL)
{
fprintf(fpb,"%7s OSS执行CHODP指令失败,无法对比计费指针,请重新手工检查!\n",elenum);
fpa=ftemp;
break;
}
for(i=0;i<3;i++)
fgets(s1,MAX,fpa);
for(i=0;i<2;i++)
fgets(s[i+2],MAX,fpa);
// fprintf(fpb,"%s%s%s%s\n",s[0],s[1],s[2],s[3]);
s0=strtok(s[0]," ");
s0=strtok(NULL," "); //s0
s1=strtok(NULL," "); //s1
s2=strtok(s[1]," "); //
s2=strtok(NULL," "); //s2
s3=strtok(NULL," "); //s3
s4=strtok(s[2]," "); //
s4=strtok(NULL," "); //s4
s5=strtok(NULL," "); //s5
s6=strtok(s[3]," "); //
s6=strtok(NULL," "); //s6
s7=strtok(NULL," "); //s7
// fprintf(fpb,"%s,%s,%s,%s,%s,%s,%s,%s\n",s0,s1,s2,s3,s4,s5,s6,s7);
if(((strcmp(s2,s6)==0&&strcmp(s3,s7)==0)&&(strcmp(s0,s4)==0||strcmp(s1,s5)==0))||((strcmp(s0,s4)==0&&strcmp(s1,s5)==0)&&(strcmp(s2,s6)==0||strcmp(s3,s7)==0)))
{
if(flag==0)
fprintf(fpb,"%7s 状态异常\n",elenum);
flag=1;
}
else
fprintf(fpb,"%7s 正常\n",elenum);
}
}
return 0;
}

如此使用char *s0,*s1,*s2,*s3,*s4,*s5,*s6,*s7肯定有问题,特别是strtok()破坏性太大了,请问各位大神,有没有更好的方法?
...全文
235 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不太在乎效率的话用正则啊
xiaohuh421 2013-05-13
  • 打赏
  • 举报
回复
并不是strtok破坏性大, 可能是你对这个函数的理解不是很好吧. 其实这个函数已经算比较好用了. 看你程序中就没有指针的判断, 肯定容易出问题的, 一不注意就崩溃了.
羽飞 2013-05-13
  • 打赏
  • 举报
回复
用strstr也能完成同样的功能,都是查找字符串

69,382

社区成员

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

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