新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 文件I/O编程之: 标准I/O编程

文件I/O编程之: 标准I/O编程

作者:时间:2013-09-13来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257135.htm

2.关闭文件

(1)说明。

关闭标准流文件的为fclose(),该将缓冲区内的数据全部写入到文件中,并释放系统所提供的文件资源。

(2)函数格式说明。

fclose()函数格式如表6.18所示。

表6.18 fclose()函数语法要点

所需头文件

#includestdio.h>

函数原型

intfclose(FILE*stream)

函数传入值

stream:已打开的文件指针

函数返回值

成功:0
失败:EOF

3.读文件

(1)()函数说明。

在文件流被打开之后,可对文件流进行读写等操作,其中读操作的函数为()。

(2)()函数格式。

fread()函数格式如表6.19所示。

表6.19 fread()函数语法要点

所需头文件

#includestdio.h>

函数原型

size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)

函数传入值

ptr:存放读入记录的缓冲区

size:读取的记录大小

nmemb:读取的记录数

stream:要读取的文件流

函数返回值

成功:返回实际读取到的nmemb数目
失败:EOF

4.写文件

(1)fwrite()函数说明。

fwrite()函数用于对指定的文件流进行写操作。

(2)fwrite()函数格式。

fwrite()函数格式如表6.20所示。

表6.20 fwrite()函数语法要点

所需头文件

#includestdio.h>

函数原型

size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream)

续表

函数传入值

ptr:存放写入记录的缓冲区

size:写入的记录大小

nmemb:写入的记录数

stream:要写入的文件流

函数返回值

成功:返回实际写入的记录数目
失败:EOF

5.使用实例

下面实例的功能跟底层I/O操作的实例基本相同,运行结果也相同(请参考6.3.1节的实例),只是用标准I/O库的文件操作来替代原先的底层文件系统调用而已。

读者可以观察哪种方法的效率更高,其原因又是什么。

#includestdlib.h>

#includestdio.h>

#defineBUFFER_SIZE1024/*每次读写缓存大小*/

#defineSRC_FILE_NAMEsrc_file/*源文件名*/

#defineDEST_FILE_NAMEdest_file/*目标文件名文件名*/

#defineOFFSET10240/*复制的数据大小*/

intmain()

{

FILE*src_file,*dest_file;

unsignedcharbuff[BUFFER_SIZE];

intreal_read_len;

/*以只读方式打开源文件*/

src_file=fopen(SRC_FILE_NAME,r);

/*以写方式打开目标文件,若此文件不存在则创建*/

dest_file=fopen(DEST_FILE_NAME,w);

if(!src_file||!dest_file)

{

printf(Openfileerrorn);

exit(1);

}

/*将源文件的读写指针移到最后10KB的起始位置*/

fseek(src_file,-OFFSET,SEEK_END);

/*读取源文件的最后10KB数据并写到目标文件中,每次读写1KB*/

while((real_read_len=fread(buff,1,sizeof(buff),src_file))>0)

{

fwrite(buff,1,real_read_len,dest_file);

}

fclose(dest_file);

fclose(src_file);

return0;

}

读者可以尝试用其他文件打开函数进行练习。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭