1.分段处理,即无论文件多大,程序中使用的永远只是一小段部分,可以使用一个缓冲区,根据用户交互输入,分段的输出;
2.使用内存文件映射,这是最常用的文件的处理方法,Linux和Windows都提供一种内存文件映射的机制,以Windows为例,可以调用 CreateFile、 CreateFileMapping以及 MapViewOfFile三个函数来完成内存文件映射;
3.使用数据库,借助SQL查询语言对大数据进行 *** 作。
C语言mmap()函数:建立内存映射头文件:
#include <unistd.h> #include <sys/mman.h>
定义函数:void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize)
函数说明:mmap()用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写。
一般来说在C语言中读取txt文件的信息有两种方法,一种是使用C语言标准文件I/O中的fopen()、fread()等等函数,一种是调用 *** 作系统中的API函数,比如Windows上的ReadFile()、OpenFile()等等,现在 *** 作系统一般都具备内存文件映射功能,对于大的txt文件,一般都使用这种方式 *** 作。下面是一个使用C语言标准文件I/O *** 作文件的例子。
#include<stdio.h>FILE*stream
void main(void)
{
long l
float fp
char s[81]
char c
stream=fopen("fscanf.out","w+")
if(stream==NULL)
printf("Thefilefscanf.outwasnotopened\n")
else
{
fprintf(stream,"%s%ld%f%c","hello world",
65000,3.14159,'x')
/*Setpointertobeginningoffile:*/
fseek(stream,0L,SEEK_SET)
/*Readdatabackfromfile:*/
fscanf(stream,"%s",s)
fscanf(stream,"%ld",&l)
fscanf(stream,"%f",&fp)
fscanf(stream,"%c",&c)
/*Outputdataread:*/
printf("%s\n",s)
printf("%ld\n",l)
printf("%f\n",fp)
printf("%c\n",c)
fclose(stream)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)