Node Results
1001 0.00 1157.33 55.61 0.00
1002 0.00 1157.33 53.96 0.00
Link Results
1 2.27 0.01 0.00
6 2.04 0.02 0.00
Node Results
1001 0.00 1157.33 55.61 0.00
1002 0.00 1157.33 53.96 0.00
Link Results
1 2.27 0.01 0.00
6 2.04 0.02 0.00
Node Results
1001 0.00 1157.33 55.61 0.00
1002 0.00 1157.33 53.96 0.00
Link Results
1 2.27 0.01 0.00
6 2.04 0.02 0.00
文档中周期性出现“Node Results”和“Link Results”,将文档中所有“Node Results”后面的内容全部输出,小白新手,非常期待大神的指点!!!!!
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
string findNodeString(FILE* fp)
{
string outbuf;
if(!fp)
{
return "";
}
int state = 0;
int pos = 0;
while(1)
{
char c = fgetc(fp);
if(c==-1)
{
break;
}
switch(state)
{
case 0:
pos = ftell(fp);
if(c=='N')
{
if(c=='N' && (c=fgetc(fp),c=='o')&&(c=fgetc(fp),c=='d')&&(c=fgetc(fp),c=='e')
&&(c=fgetc(fp),c==' ')&&(c=fgetc(fp),c=='R')&&(c=fgetc(fp),c=='e')
&&(c=fgetc(fp),c=='s')&&(c=fgetc(fp),c=='u')&&(c=fgetc(fp),c=='l')
&&(c=fgetc(fp),c=='t')&&(c=fgetc(fp),c=='s'))
{
state=1;
}
else
{
fseek(fp, pos + 1, SEEK_SET);
}
}
// else if(c=='L')
// {
// if(c=='L' && (c=fgetc(fp),c=='i')&&(c=fgetc(fp),c=='n')&&(c=fgetc(fp),c=='k')
// &&(c=fgetc(fp),c==' ')&&(c=fgetc(fp),c=='R')&&(c=fgetc(fp),c=='e')
// &&(c=fgetc(fp),c=='s')&&(c=fgetc(fp),c=='u')&&(c=fgetc(fp),c=='l')
// &&(c=fgetc(fp),c=='t')&&(c=fgetc(fp),c=='s'))
// {
// state=1;
// }
// else
// {
// fseek(fp, pos + 1, SEEK_SET);
// }
// }
break;
case 1:
if(c==' ' || c=='\r' || c=='\n' || c=='\t' || (c>='0' && c<='9') || c=='.')
{
outbuf+=c;
continue;
}
else
{
//输出结果
pos = ftell(fp);
fseek(fp, -1,SEEK_CUR);
return outbuf;
}
break;
default:
break;
}
}
return "";
}
int main(int argc,char** argv)
{
FILE *fp = fopen("d:\\test\\test.txt","rb");
if(fp)
{
while(1)
{
string str = findNodeString(fp);
if(str.empty())
{
break;
}
cout << str << endl;
}
fclose(fp);
}
else
{
cout <<"fopen failed" << endl;
}
return 0;
}
thank you.
#include
using namespace std;
int main()
{
FILE *fp;
char s[200];
int flag = 0;
fp = fopen("in.txt", "r");
while(fgets(s, 200, fp) != NULL)
{
if(flag == 0)
{
if(strstr(s, "[ENERGY]")) flag = 1;
}
else if(flag == 1)
{
if(s[0] == '\n') break;
printf("%s",s);
}
}
fclose (fp);
return 0;
}
你不是再百度知道问过答案的吗?
这种匹配,,,正则表达式,首选,,很好匹配,,http://blog.csdn.net/small_mouse0/article/details/54144351(入门篇,可以瞅瞅)
C++感觉忘得差不多了,但是逻辑应该是没问题的。
以指定字符串为分隔符,将内容分割,输入后面部分。
但是如果你的指定字符串存在多个就会出现问题。