文件I/O编程之: 标准I/O编程
函数原型 | FILE * freopen(const char *path, const char * mode, FILE * stream) |
函数传入值 | path:包含要打开的文件路径及文件名 |
mode:文件打开状态(后面会具体说明) | |
stream:已打开的文件指针 | |
函数返回值 | 成功:指向FILE的指针 |
2.关闭文件
(1)函数说明。
关闭标准流文件的函数为fclose(),该函数将缓冲区内的数据全部写入到文件中,并释放系统所提供的文件资源。
(2)函数格式说明。
fclose()函数格式如表6.18所示。
表6.18 fclose()函数语法要点
所需头文件 | #include <stdio.h> |
函数原型 | int fclose(FILE * stream) |
函数传入值 | stream:已打开的文件指针 |
函数返回值 | 成功:0 |
3.读文件
(1)fread()函数说明。
在文件流被打开之后,可对文件流进行读写等操作,其中读操作的函数为fread()。
(2)fread()函数格式。
fread()函数格式如表6.19所示。
表6.19 fread()函数语法要点
所需头文件 | #include <stdio.h> |
函数原型 | size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream) |
函数传入值 | ptr:存放读入记录的缓冲区 |
size:读取的记录大小 | |
nmemb:读取的记录数 | |
stream:要读取的文件流 | |
函数返回值 | 成功:返回实际读取到的nmemb数目 |
4.写文件
(1)fwrite()函数说明。
fwrite()函数用于对指定的文件流进行写操作。
(2)fwrite()函数格式。
fwrite()函数格式如表6.20所示。
表6.20 fwrite()函数语法要点
所需头文件 | #include <stdio.h> |
函数原型 | size_t fwrite(const void * ptr,size_t size, size_t nmemb, FILE * stream) |
续表
函数传入值 | ptr:存放写入记录的缓冲区 |
size:写入的记录大小 | |
nmemb:写入的记录数 | |
stream:要写入的文件流 | |
函数返回值 | 成功:返回实际写入的记录数目 |
5.使用实例
下面实例的功能跟底层I/O操作的实例基本相同,运行结果也相同(请参考6.3.1节的实例),只是用标准I/O库的文件操作来替代原先的底层文件系统调用而已。
读者可以观察哪种方法的效率更高,其原因又是什么。
#include <stdlib.h>
#include <stdio.h>
#define BUFFER_SIZE 1024 /* 每次读写缓存大小 */
#define SRC_FILE_NAME "src_file" /* 源文件名 */
#define DEST_FILE_NAME "dest_file" /* 目标文件名文件名 */
#define OFFSET10240 /* 复制的数据大小 */
int main()
{
FILE *src_file, *dest_file;
unsigned char buff[BUFFER_SIZE];
int real_read_len;
/* 以只读方式打开源文件 */
src_file = fopen(SRC_FILE_NAME, "r");
/* 以写方式打开目标文件,若此文件不存在则创建 */
dest_file = fopen(DEST_FILE_NAME, "w");
if (!src_file || !dest_file)
{
printf("Open file error\n");
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);
return 0;
}
读者可以尝试用其他文件打开函数进行练习。
6.5.2 其他操作
文件打开之后,根据一次读写文件中字符的数目可分为字符输入输出、行输入输出和格式化输入输出,下面分别对这3种不同的方式进行讲解。
1.字符输入输出
字符输入输出函数一
I O编程 Linux 函数 fread 操作系统 相关文章:
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE下驱动程序开发基础(二)(11-09)
- VXWORKS内核分析(11-11)
- REDIce-Linux--灵活的实时Linux内核(11-12)
- Linux2.4内核为我们带来了什么?(11-12)