注:非授权,请勿转载 

在实际工作中,很多情况我们需要将不同类型的数据组织起来一起应用,比如:学校在期末考试结束后,通常都要进行学生成绩的填报和查询工作。一个一年级小学生的信息通常包括:姓名、学号、性别、年龄、语文成绩、数学成绩等。姓名、性别是一个字符类型的数据,而年龄、学号为整数类型,语文成绩、数学成绩通常都为单精度浮点类型数据。我们知道不同类型的数据是不能放到同一个数组里面的,那么在C语言中是否有方法将这些不同数据类别的数据组织到一起呢?回答是:“有,可以用结构来处理这种问题。”,接下来,就让我们来了解一下,什么叫结构。“结构”是一种构造类型,它是由若干“成员”组成的,每一个成员可以是一个基本数据类型或者又是一个构造类型。通常,一个结构的一般形式为:

struct 结构名

{成员表列};

成员表列,由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:

类型说明符 成员名;

现在,让我们一起来给学生来定义一个“结构”

struct student

{

int num; //学号

char name[20];      //姓名

char sex[2];    //性别

int age;        //年龄

float chinesescore; //语文成绩

float mathscore;     //数学成绩

};

上面我们定义了一个名称为“student”的结构,它包含了,学号、姓名、性别、年龄、语文成绩和数学成绩信息。

那么如何应用结构,在LoadRunner中应用结构的示例脚本如下:

struct student

{

int num; //学号

char name[8]; //姓名

int age;        //年龄

char sex[2];    //性别

float chinesescore; //语文成绩

float mathscore;     //数学成绩

};

Action()

{  //为结构数组赋前2个结构数组元素值

struct student stu[3]={{101,"孙悟空",30,"男",100.00,100.00},

{102,"沙和尚",28,"男",99.00,99.00},};

struct student stu1={103,"白骨精",99,"女"}; //为结构变量stu1赋部分数据

int i;

stu1.chinesescore=90.50;      //为stu1赋语文成绩

stu1.mathscore=89.00;         //为stu1赋数学成绩

stu[2]=stu1;    //将stu1变量赋给数组元素stu[2]

for (i=0;i<=2;i++) {

lr_output_message("-----------------------------");

lr_output_message("第%d个学生信息:",i+1);

lr_output_message("学号=%d",stu[i].num);

lr_output_message("姓名=%s",stu[i].name);

lr_output_message("性别=%s",stu[i].sex);

lr_output_message("年龄=%d",stu[i].age);

lr_output_message("语文成绩=%.2f",stu[i].chinesescore);

lr_output_message("数学成绩=%.2f",stu[i].mathscore);

lr_output_message("-----------------------------");

}

return 0;

}

上面脚本的输出内容为:

Running Vuser...

Starting iteration 1.

Starting action Action.

Action.c(24): -----------------------------

Action.c(25): 第1个学生信息:

Action.c(26): 学号=101

Action.c(27): 姓名=孙悟空

Action.c(28): 性别=男

Action.c(29): 年龄=30

Action.c(30): 语文成绩=100.00

Action.c(31): 数学成绩=100.00

Action.c(32): -----------------------------

Action.c(24): -----------------------------

Action.c(25): 第2个学生信息:

Action.c(26): 学号=102

Action.c(27): 姓名=沙和尚

Action.c(28): 性别=男

Action.c(29): 年龄=28

Action.c(30): 语文成绩=99.00

Action.c(31): 数学成绩=99.00

Action.c(32): -----------------------------

Action.c(24): -----------------------------

Action.c(25): 第3个学生信息:

Action.c(26): 学号=103

Action.c(27): 姓名=白骨精

Action.c(28): 性别=女

Action.c(29): 年龄=99

Action.c(30): 语文成绩=90.50

Action.c(31): 数学成绩=89.00

Action.c(32): -----------------------------

Ending action Action.

Ending iteration 1.

Ending Vuser...

当然,为了我们引用结构方便,您可以应用类型定义符“typedef”将“struct student”命名成简洁的、明了的名称。C语言允许由用户自己定义类型说明符,即:类型定义符“typedef”,允许由用户为数据类型取“别名”。上面的结构脚本,我们可以用“typedef”实现同样的功能。

typedef struct student

{

int num; //学号

char name[8]; //姓名

int age;        //年龄

char sex[2];    //性别

float chinesescore; //语文成绩

float mathscore;     //数学成绩

} STU;

Action()

{     //为结构数组赋前2个结构数组元素值

STU stu[3]={{101,"孙悟空",30,"男",100.00,100.00},

{102,"沙和尚",28,"男",99.00,99.00},};

STU stu1={103,"白骨精",99,"女"};//为结构变量stu1赋部分数据

int i;

stu1.chinesescore=90.50;      //为stu1赋语文成绩

stu1.mathscore=89.00;         //为stu1赋数学成绩

stu[2]=stu1;    //将stu1变量赋给数组元素stu[2]

for (i=0;i<=2;i++) {

lr_output_message("-----------------------------");

lr_output_message("第%d个学生信息:",i+1);

lr_output_message("学号=%d",stu[i].num);

lr_output_message("姓名=%s",stu[i].name);

lr_output_message("性别=%s",stu[i].sex);

lr_output_message("年龄=%d",stu[i].age);

lr_output_message("语文成绩=%.2f",stu[i].chinesescore);

lr_output_message("数学成绩=%.2f",stu[i].mathscore);

lr_output_message("-----------------------------");

}

return 0;

}

请大家注意黑体字部分,应用“typedef”后,您会发现在定义结构变量的时候,我们省略了“struct student”而用自定义的符号“STU”来声明相应变量即可,非常方便。还有一点,不知道您注意到没有,就是我们在定义的时候书写了这样的语句“STU stu[3]”,如果您在Delphi等语言中书写,它会提示您书写错误的,原因是这些语言是不区分大小写的,而在C语言中是区分大小写的,“STU”和“stu”分别代表两个不同的内容。

[原创]结构在Loadrunner中的应用相关推荐

  1. LoadRunner中log的使用总结

    LoadRunner中log的使用总结 1.log的设置方式. 在 runtime setting中可以设置log的生成方式: 默认的log方式: Enable logging选中,log optio ...

  2. 结构化场景中的RGB-D SLAM

    点云PCL免费知识星球,点云论文速读. 文章:RGB-D SLAM with Structural Regularities 作者:Yanyan Li , Raza Yunus , Nikolas B ...

  3. 理解LoadRunner中的局部变量和全局变量

    以下内容均选自个人作品:<精通软件性能测试与LoadRunner实战>   在C语言中,变量有效性的范围称变量的作用域.不仅对于形参变量,C语言中所有的量都有自己的作用域,按作用域范围不同 ...

  4. loadrunner中自定义查找并替换函数

    globas.h中定义 //LoadRunner中没有直接的函数支持查找并替换字符串,因此可以封装一个lr_replace函数出来:// ------------------------------- ...

  5. 浅谈loadrunner中pacing设置

    2019独角兽企业重金招聘Python工程师标准>>> 在 LoadRunner 的运行场景中,有一个不大起眼的设置,可能经常会被很多人忽略,它就是Pacing .具体设置方式为:  ...

  6. 以下构成python循环结构的方法中_超星尔雅初级英语口语(持续更新中)选修课答案...

    套期具有"对冲""互抵"的关系 答:正确 差异化战略核心是企业在市场营销.研究和开发.产品技术和工艺设计以及服务等方面具有强大的实力. 答:正确 以下构成Pyt ...

  7. 程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。...

    程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成 ...

  8. SQL结构化查询语言中的LIKE语句

    SQL结构化查询语言中的LIKE语句 在sql结构化查询语言中,like语句有着至关重要的作用. like语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串 ...

  9. loadrunner中并发数与迭代的区别

    loadrunner中并发数与迭代的区别 网友问题:  例如在LR里,我要测100个用户同时并发登陆所用时间,那我是不是在录制好脚本后,需要参数化"用户名","密码&qu ...

最新文章

  1. Python中处理DataFrame,R绘图
  2. Python Machine Learning Windows 安装包网址
  3. 吐槽过后,我为什么要夸夸 Go 语言
  4. 大神是如何装逼的 之 vim插件使用taglist和nerdtree
  5. python三层for循环_Python基础入门-For循环
  6. Wannafly挑战赛25 A 因子
  7. java基础app开发教程_安卓app开发基础入门
  8. Dogfight :从无人机视频中检测无人机
  9. android应用是非正式版本,Androidstudio 打包apk安装失败 应用是非正式发布版本,当前设备不支持安装...
  10. 中国颅骨固定系统行业市场供需与战略研究报告
  11. 【程序人生】1024 程序员节——闲言鹤语
  12. 「BJOI 2019」奥术神杖
  13. 使用ENVI软件中的SARSCAP工具对RADARSAT数据进预处理
  14. selenium切换窗口的几种方法小结
  15. ata camera
  16. 职场办公常用的技巧,办公如有神助
  17. watchOS 4 教程(2):表格
  18. 【网络】【操作系统】详解select、poll、epoll
  19. ui设计师作品集_需要设计师,需要作品集
  20. 3d全景效果图和普通图片的区别,北京同创蓝天提供哪些服务?

热门文章

  1. spring-session源码解读 sesion
  2. iOS 开发_..和self...的区别以及使用
  3. javascript小实例,PC网页里的拖拽(转)
  4. Android报错——connect failed: EHOSTUNREACH (No route to host)
  5. iSCSI的基础实验
  6. Android开源测试框架
  7. 运维工作钱少、事多而且杂?年轻人,你这个思想很危险吶
  8. React系列---Redux高阶运用
  9. iOS中的两种搜索方式UISearchDisplayController和UISearchController
  10. 覆盖(override)和重载(overload)