loadrunder脚本篇——文件读写操作
函数说明
函数原型:
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;
}
运行结果:

loadrunder脚本篇——文件读写操作的更多相关文章
- loadrunner 脚本开发-文件读写操作
脚本开发-文件读写操作 by:授客 QQ:1033553122 函数说明 函数原型: size_t fwrite( const void *buffer, size_t size, size_t co ...
- 实现动态的XML文件读写操作
实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...
- 实现动态的XML文件读写操作(依然带干货)
前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...
- c语言文件读写操作总结
C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- PHP文件读写操作之文件写入代码
在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...
- Java 字节流实现文件读写操作(InputStream-OutputStream)
Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- python(三)一个文件读写操作的小程序
我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...
随机推荐
- symbol lookup error
今天编译代码时出现这样的错误提示: “./test: symbol lookup error: ./test: undefined symbol: ……” 问题原因是:test使用的动态库和makef ...
- UI-9-UITableView
课程要点: UITableView及其两种风格和三部分 UITableViewController UITableViewCell及其四种风格 通过代理给UITableView设置cell 性能优化 ...
- mybatis执行多条sql语句
1,mybatis执行多条sql语句,有以下几种思路, a,存储过程 b,修改jdbc的参数,允许执行多条语句,如下所示: sqlserver可以直接使用begin,end来执行多条语句, mysql ...
- Response设置response header
total : #常见状态码:服务器处理请求的结果状态 200 : 表示请求处理完成并完美返回; 302 : 表示请求需要进一步细化; 404 : 表示客户访问资源Not Found; 500 : 表 ...
- easyui最简单的左右布局实现,及tab的右键菜单实现
发现最近有些人问用JQuery easyui要怎么实现左右结构的布局.就是点击左边的菜单在右边的tab中打开.其实easyui要实现这种布局很简单,只需要简单的几行代码就ok了. 特意做了一个小小的d ...
- 【转】Web前端开发:为何选择MVVM而非MVC
在Web中充斥着所谓的MVC框架,而在我看来,因为一些关键性的技术原因,MVC在Web前端开发中根本无法使用(对的,是无法,而不是不该) 在Web中充斥着所谓的MVC框架,而在我看来,因为一些关键性的 ...
- Linux下mongodb安装及数据导入导出教程
Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...
- Android 自定义键盘车牌号输入
参考资料 :https://github.com/winterPei/LicensePlateUtil 自定义优化代码: https://gitee.com/anan9303/LicensePlate ...
- 在eclipse里面使用git仓库,并且使用maven加载项目
前提:安装完成git和maven(maven需要在eclipse中配置完成) 1.点击Windows->show view 选择Git Repositories(git仓库) 2.点击2号图标, ...
- Eclipse 启动时闪退问题解决方案
一.以前Eclipse都可以正常使用,突然有一天不能启动了,点击图标后启动画面一闪之后就消失了,以下是一些解决方案: 1. 找到Eclipse目录下的eclipse.exe,右键点击->发送到桌 ...