函数说明

函数原型:

size_t fwrite( const void *buffer, size_t size, size_t count, FILE *file_pointer );

参数说明:

buffer:包含数据的缓冲区

size:缓冲区buffer的大小(字节为单位)

count:缓冲区中写入多少个size大小数据(The number of bytes to store in the buffer)

file_pointer:指向存放数据文件的文件指针

size_t: 际写入的数据块数目(每个数据块大小为size)

函数原型:

size_t fread( void *buffer, size_t size, size_t count, FILE *file_pointer );

参数说明:

同fwrite

函数原型:

int ferror( FILE *file_pointer );

功能:检查文件i/o错误

参数说明:

file_pointer:指向文件的文件指针

函数原型

int feof( FILE *file_pointer );

功能:检测流上的文件结束符

参数说明:

file_pointer:指向文件的文件指针

以下通过例子说明如何进行数据存取操作

例子1

从d盘的readme.txt中读取文件内容并显示读取字节数

代码:

Action()

{

int count = 0;

char *buffer=NULL;
int filelenth=0;

long file_stream;

char * filename = "F:\\test.txt";

if ((file_stream = fopen(filename, "r")) == NULL )

{

lr_error_message ("Cannot open %s", filename);

return -1;

}

// Read until end of file

while (!feof(file_stream))

{
fseek(file_stream,0,2);
filelenth=ftell(file_stream);
fseek(file_stream,0,0);

buffer=(char *)malloc(filelenth);

// Read 1000 bytes while maintaining a running count

count = fread(buffer, sizeof(char), filelenth, file_stream);

lr_output_message ("%d bytes read", count);
lr_output_message("conten is %s",buffer);

if (ferror(file_stream)) {

lr_output_message ("Error reading file %s", filename);

}

break;

}

// Close the file stream

if (fclose(file_stream))

{

lr_error_message ("Error closing file %s", filename);

}

return 0;

}

结果:

脚本开发-文件读写操作" title="loadrunner 脚本开发-文件读写操作" border="0">

例子2

将每个学生的数据(学号和成绩)保存到某个文件,然后从该文件读取存放的学生数据记录并展示

代码:

Action()

{

// 定义保存学生数据的文件名

#ifdef unix

char * filename = "/tmp/marks.txt";

#else

char * filename = "d:\\marks.txt";

#endif

// 保存学生数据(学号和成绩)

struct student_data

{

int student_id;

unsigned char marks[10];

};

struct student_data sd1;  // 定义结构体,用于定义学生数据

struct student_data sd2;  // 用于存放从文件中读取的学生数据

long file_handle = NULL;   // 文件句柄

int i = 0;

int count = 0; // 统计每次读取学生记录个数

int total = 0; // 用于统计总的学生记录个数

// 打开、创建数据文件

if ((file_handle = fopen(filename, "w+")) == NULL)

{

lr_output_message ("Unable to create %s", filename);

return -1;

}

// 设置学号

sd1.student_id = 1001;

// 设置成绩(假设10门课程)

for (i = 0; i < 10; i++)

{

sd1.marks[i] = (unsigned char)(85 + i);

}

// 把学生记录写入数据文件

i = fwrite(&sd1, sizeof(struct student_data), 1, file_handle);

if (i > 0)  // fwrite调用不成功则返回0

{

lr_output_message ("Successfully wrote %d record", i);

}

fclose(file_handle); // 关闭文件

if ((file_handle = fopen(filename, "r")) == NULL )  // 如果打开文件失败

{

lr_error_message ("Cannot open %s", filename);

return -1;

}

// 读取全部文件内容

while (!feof(file_handle))

{

count = fread(&sd2, sizeof(struct student_data), 1, file_handle);

lr_output_message ("%d 个学生数据记录", count);

// 检查文件I/O错误

if (ferror(file_handle))

{

lr_output_message ("Error reading file %s", filename);

break;

}

total += count; // 计算实际读取的总字节数

}

// 展示最后的数据

lr_output_message("学生的学号为:%d,成绩如下:", sd2.student_id);

for(i=0; i<10; i++)

{

lr_output_message("%u", sd2.marks[i]);

}

lr_output_message ("Total number of student record = %d", total);

// 关键文件流

if (fclose(file_handle))

{

lr_error_message ("Error closing file %s", filename);

}

return 0;

}

运行结果:

最新文章

  1. css左右居中的几种常见方法
  2. 用nifi把hdfs数据导到hive
  3. 初识python(1)
  4. 使用豆瓣的pypi源
  5. 用数据表创建树_delphi教程
  6. mycat启动后,用Navicat Premium 连接报 &quot;2013&quot;
  7. REST_FRAMEWORK加深记忆-极致抽象,极致完结
  8. 通过ulimit改善linux系统性能(摘自IBM)
  9. 转载 SharePoint【Site Definition 系列】– 创建Content Type
  10. Python CGI编程和CGIHTTPServer
  11. JS数组例子
  12. Java架构师学习路线
  13. FutureTask理解
  14. py文件2种执行方式
  15. html 文字少则居中多则居左
  16. asp.net MVC 上传文件 System.Web.HttpException: 超过了最大请求长度
  17. 异步async、await和Future的使用技巧
  18. (4.20)sql server中 len 与datalength 的区别
  19. 卸载或重新安装Redis集群
  20. 在阿里云申请Symantec免费SSL证书操作流程

热门文章

  1. python统计订单走势
  2. iOS 集成微信支付【转载】
  3. iOS 后台定位审核被拒How to clarify the purpose of its use in the locatio
  4. IOS设计模式的六大设计原则之依赖倒置原则(DIP,Dependence Inversion Principle)
  5. 设计模式中类的关系之依赖关系(Dependence)
  6. Div+CSS布局入门教程
  7. Java基础10 接口的继承与抽象类(转载)
  8. Servlet Cookie 处理
  9. 如何用MathType编辑圆圈符号
  10. matlab小数分数转换