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. ...
随机推荐
- Spring+SpringMVC+MyBatis+Maven框架整合
本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点 一.Maven需要引入的jar包 二.Spring与SpringMVC的配置分离 三.Sprin ...
- imx6中iomux IO复用
IOMUX Controller (IOMUXC) IO多路复用控制器1.overviewThe IOMUX Controller (IOMUXC), together with the IOMUX, ...
- ansible学习之--安装Svn
1.安装svn 机器 Ubuntu SMP Thu Jan 15 20:21:55 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 使用 sudo apt-get in ...
- php文件加密
1.在线加密 网址:http://www.phpjm.net/encode.html 本人测试过还可以,就是纯加密,没有解密.
- Valgrind使用-转载
完全转载的,仅当学习使用 对应链接地址:http://www.gjprj.cn/news1.asp?id=2862 另见valgrind的使用简介,http://blog.csdn.net/sduli ...
- spoj 10628
http://www.spoj.com/problems/COT/ 树上第k小元素 LCA + 可持久化线段树 每个新的版本都是由其父亲版本转化而来. #include <cstdio> ...
- 《从零开始学Swift》学习笔记(Day 11)——数据类型那些事儿?
原创文章,欢迎转载.转载请注明:关东升的博客 在我们学习语言时都会学到这种语言的数据类型,在Swift中数据类型有那些呢?整型.浮点型.布尔型.字符.字符串这些类型是一定有的,其中集合. ...
- Java 科学计数法
目录 Java 科学计数法 1 科学计数法的概念 1.1 有效数字 1.2 E记号 2 Java中的科学计数法 2.1 NumberFormat 2.2 DecimalFormat 2.3 BigDe ...
- zend studio,操作记录
1.代码字体大小 打开Window->Preferences->General->Apperance-Colors and fonts->Structured Text Edi ...
- NoSQL 数据库分类 颠覆
NoSQL 数据库分类 类型 部分代表特点 列存储 HbaseCassandraHypertable顾名思义,是按列存储数据的.最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或 ...