当Loadrunner参数文件,每行取值文件过长且难以保存成功时,可以尝试使用读取文件行的方式取参数。
参考的函数如下:
#include
char * ReadSpeacialLine(int i)
{
char filename[] = "test.c"; //文件名
FILE *fp;
int WhichLine=i; //指定要读取哪一行
int CurrentIndex=0; //当前读取的行
char StrLine[1024]; //每行最大读取的字符数,可根据实际情况扩大
if((fp = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return NULL;
}
while (!feof(fp))
{
if (CurrentIndex==WhichLine)
{
fgets(StrLine,1024,fp); //读取一行
printf("%s", StrLine); //输出
return StrLine;
}
fgets(StrLine,1024,fp); //读取一行,并定位到下一行
CurrentIndex++;
//printf("%s", StrLine); //输出
}
fclose(fp); //关闭文件
return NULL;
}
Loadrunner中的实现如下:
以下为从一个总行数为10的文件中随机取一行的实现方法,以下内容放在Action.c中即可:
char filename[] = "trainInfo.txt"; //文件名
long file;
int WhichLine=rand()%10; //生成0到9的随机数
int CurrentIndex=0; //当前读取的行
char StrLine[2000]; //每行最大读取的字符数,可根据实际情况扩大
lr_output_message("WhichLine---%d",WhichLine);
//
if((file = fopen(filename,"r")) == NULL) //判断文件是否存在及可读
{
printf("error!");
return NULL;
}
while (!feof(file))
{
if (CurrentIndex==WhichLine)
{
fgets(StrLine,2000,file); //读取一行
//printf("%s", StrLine); //输出
break;
}
fgets(StrLine,2000,file); //读取一行,并定位到下一行
CurrentIndex++;
//printf("%s", StrLine); //输出
}
fclose(file);
//printf("StrLine--%s",StrLine); //输出
lr_save_string(StrLine,"trainInfo");
//lr_output_message("trainInfo---%s",lr_eval_string("{trainInfo}"));