第1个回答 2010-09-07
值得一提的是: C语言中没有行读取的标准函数。不过你可以了解下C++中的getline
例子如下:(假如要检查hello)
FILE *ptr;
ptr = fopen("C://a.txt","r");
if (ptr == NULL)
exit(EXIT_FAILURE);
char * line = NULL;
size_t len = 0;
size_t read;
while ((read = getline(&line, &len, fp)) != -1) {
printf("line of length %d :\n", read);
printf("%s", line);
if (strstr(line,"hello"))
{
printf("找到它了\n");
break;
}
}
fclose(ptr);
大致的代码是这样 你可以根据自己的需求DLY下。
第2个回答 2010-09-07
如果你之前的几行字节数固定,可以考虑使用
#include <stdio.h>
int fseek( FILE *stream, long offset, int origin );
直接定位需要检测的数据,如果之前的几行字节数不固定,可以在生成一个伴随的索引文件,记录需要检测字符串的位置,每次根据这个索引文件去检查。如果没有索引文件,之前字节数也不固定的话,还是逐行读取到所需位置吧!
其实,如果文件不是特别大,这个效率损失也是可以接受的,不必要非要搞索引文件。