文件IO编程:
优点:适合访问大量数据的场景,节省内存
缺点:速度减慢
文件IO操作:打开操作关闭1.fopen函数:打开文件
函数原型: file * fopen (常数char * filename,常数char * mode );
打开时返回文件类型指针,否则返回空值
(1)参数1 :
文件名(如果文件位于当前目录下,则直接写文件名即可,否则添加文件路径)。
(2)参数2 :
文件打开方式:拼出' r、w、a、t、b、' 6个字符,各字符的含义如下。
r (读取) :读数
w (写入) :写入
添加a(append ) :
t(text ) :文档,可以不写
B(Banary ) :二进制文件
:3358www.Sina.com/
函数原型: size_tfwrite(constvoid*ptr,size_t size,size_t count,FILE *stream ) ) ) ) ) )。
将ptr指向的数据写入文件,成功返回实际写入的数据数,返回-1失败。
(1)参数1 :
ptr :要写入的数据的起始地址
(2)参数2 :
size :每个数据的大小(字节)
(3)参数3 :
计数:数据的数量
(4)参数4 :
流:打开的文件指针2.fwrite函数:对文件进行写操作
函数原型: size_tfread(void*buffer,size_t size,size_t count,FILE *stream );
从文件中获取size * count空间大小的数据到buffer 3.fread函数:对文件进行读操作
原型: int fclose (文件*流) ) ) ) ) ) ) ) )。
关闭文件指针stream指向的文件。
简单示例:将数据存储在磁盘文件test.txt中,从文件中读取数据并输出。
# include stdio.h # include stdlib.hint main () {FILE *fp; //文件指针是文件char s[]='你好abc!' 用于操作; //9字节大小的字符串(2 2 1 1 1 1 1) int a=1; if () FP=fopen(test.txt ),a ) ) )==NULL )/a模式下打开文件{ puts } openerror! ' ); getchar (; 退出(0; }fwrite(s,sizeof(s(char ),sizeof ) )/sizeof (char ),fp ); //将字符串s写入文件fwrite(a,sizeof ) int ),1,fp; 将//a值写入文件fclose(FP )的char b[9]={0}; //这里,b数组的空间大小请与s相同。 否则,会误读为cint c=0。 以if () FP=fopen('test.txt ',' r ' ) )==NULL )/r模式打开文件{ puts } ' openerror! ' ); getchar (; 退出(0; }fread(b,sizeof(b(char ),sizeof )/sizeof (char ),fp ); //从文件中将s字符串读到BFread(c,sizeof(int ),1,fp ); //从文件中将a的值读取到cfclose(FP )的printf(%s(n ),b ); //输出从文件中读取的数据的printf('%dn”,c ); 返回0; }程序结果:
上面提供了最基本的输入和输出,如果需要更复杂的操作,还有其他文件I/o操作函数。
fseek函数:文件定位
rewind函数:清楚错误标记,将文件放在开头
fflush函数:更新文件流缓冲区
等一下
注:
请注意文件的打开方法。 不正确的打开方式可能会失败。例如,不存在的文件不能用r方式打开。
在电脑上显示字符串以外的内容时会发生乱码。 由于编码问题,txt只能显示字符串的文本信息。
连续、多次从文件中读取数据时,必须考虑文件指针的位置和读取区域的越界问题。