c语言 如何相对快速的读取文件

c语言 如何相对快速的读取文件,第1张

1、一次性把文件读入到内存当中,直接对内存进行 *** 作。这样总的运行时间会比一边读文件一边 *** 作的时间要少。

2、步骤:

1)验证该文件是否存在,并获取文件大小

2)根据文件大小申请一个足够大的缓冲(假定内存足够的话);

3)fread将整个文件装入缓冲;

4)对缓存进行 *** 作。

例程:

#include<stdio.h>

#include<string.h>

int main(void)

{

FILE*stream

char buf[2000]    //字符数组作为缓存

if((stream=fopen("文件.txt","r"))==NULL) //打开文件

{

fprintf(stderr,"Cannot open outputfile.\n")

return 0

}

fread(buf,sizeof(buf),1,stream) //读取文件内容到缓存当中

printf("%s\n",buf)

//直接对缓存进行 *** 作

fclose(stream)

return0

}

通过以下代码获取文件大小,然后分配相应大小的内存,一次性读取文件到此内存就可以加快读取速度了。具体代码如下:

#include <stdio.h>

#include <stdlib.h>

int main ()

{

FILE * pFile

long lSize

char * buffer

size_t result

/* 若要一个byte不漏地读入整个文件,只能采用二进制方式打开 */

pFile = fopen ("test.txt", "rb" )

if (pFile==NULL)

{

fputs ("File error",stderr)

exit (1)

}

/* 获取文件大小 */

fseek (pFile , 0 , SEEK_END)

lSize = ftell (pFile)

rewind (pFile)

/* 分配内存存储整个文件 */

buffer = (char*) malloc (sizeof(char)*lSize)

if (buffer == NULL)

{

fputs ("Memory error",stderr)

exit (2)

}

/* 将文件拷贝到buffer中 */

result = fread (buffer,1,lSize,pFile)

if (result != lSize)

{

fputs ("Reading error",stderr)

exit (3)

}

/* 现在整个文件已经在buffer中,可由标准输出打印内容 */

printf("%s", buffer)

/* 结束演示,关闭文件并释放内存 */

fclose (pFile)

free (buffer)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11488810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存