场景:读取大数据文件,一段一段进行读取,以节省一下读取文件内存占用大的问题,并且这样效率也不高。
下面是读取一行数据进行处理,每次读取的大小都是固定的,直到读完为止。
#include <stdio.h>
char * ReadSpeacialLine(int i)
{
char filename[] = "E:\\VC++\\test.txt"; //文件名
FILE *fp;
int which_line=i; //指定要读取哪一行
int current_index=0; //当前读取的行
char strLine[512]; //每行最大读取的字符数,可根据实际情况扩大
if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return NULL;
}
while (!feof(fp))
{
if (current_index==which_line)
{
fgets(strLine,512,fp); //读取一行
printf("%s", strLine); //输出
return strLine;
}
fgets(strLine,512,fp); //读取一行,并定位到下一行
current_index++;
//printf("%s", StrLine); //输出
}
fclose(fp); //关闭文件
return NULL;
}
int main(int agrc,char* agrv[])
{
char *temp =ReadSpeacialLine(2);
return 0;
}