我正在尝试从以下文件中提取[HOCKEY]和[HOCKEY完成]之间的文本:sport.txt
:
[HOCKEY]
a=10
b=20
c=30
d=45
[done with HOCKEY]
[SOCCER]
a=35
b=99
c=123
d=145
[done with SOCCER]
使用以下代码,我将能够检查行是否为[HOCKEY],但无法记录[HOCKEY]和[done with HOCKEY]之间的第一行和最后一行的位置
#include<stdio.h>
int main()
{
FILE *infile;
char start, end;
char *sport="[]";
char line_buffer[BUFSIZ]; /* BUFSIZ is defined if you include stdio.h */
int line_number,i;
infile = fopen("sport.txt", "r");
printf("Opened file for reading\n");
line_number = 0;
while (fgets(line_buffer, sizeof(line_buffer), infile)) {
++line_number;
/* note that the newline is in the buffer */
if (line_buffer=="[HOCKEY]")
{
start=line_buffer;
printf("Found start %s",start);
}
if (line_buffer=="[done with HOCKEY]")
end=line_buffer;
while(start<end){
printf("%c",start);
start++;
system("PAUSE");
}
}
return 0;
}
最佳答案
第一行是[HOCKEY]
之后的第一行。和
最后一行是[done with HOCKEY]
之前的最后一行。
因此,您需要的是一行一行地读取文件。读取[HOCKEY]
时,您正在接近所需的真实数据,并开始从下一行读取和存储数据。继续此步骤,直到您阅读[done with HOCKEY]
并停止。