LoadRunner中自定义C函数实现字符串替换
2017-05-26 16:42
302 查看
1.在globals.h 中定义一个函数ReplaceStr,实现字符串的替换: int ReplaceStr(char* sSrc, char* sMatchStr, char* sReplaceStr) { int StringLen; char caNewString[1024]; char* findPos; merc_timer_handle_t timer_ReplaceStr = lr_start_timer(); lr_debug_message(LR_MSG_CLASS_EXTENDED_LOG ,"Notify:Function 'ReplaceStr' started."); findPos =(char *)strstr(sSrc, sMatchStr); if( (!findPos) || (!sMatchStr) ){ lr_debug_message(LR_MSG_CLASS_EXTENDED_LOG ,"Notify:Function 'ReplaceStr' ended with error!"); return -1; } while( findPos) { memset(caNewString, 0, sizeof(caNewString)); StringLen = findPos - sSrc; strncpy(caNewString, sSrc, StringLen); strcat(caNewString, sReplaceStr); strcat(caNewString, findPos + strlen(sMatchStr)); strcpy(sSrc, caNewString); findPos =(char *)strstr(sSrc, sMatchStr); } lr_debug_message(LR_MSG_CLASS_EXTENDED_LOG,"Result:%s",sSrc); free(findPos); lr_debug_message(LR_MSG_CLASS_EXTENDED_LOG ,"Notify:Function 'ReplaceStr' ended (Duration: %lf)", lr_end_timer(timer_ReplaceStr)); return 0; } 2.在init/Action/end 中调用: char strView[1024]; web_reg_save_param("viewState5", "LB=\"javax.faces.ViewState\" value=\"", "RB=\"", LAST); sprintf(strView,lr_eval_string("{viewState5}")); ReplaceStr(strView,"+","%2B"); ReplaceStr(strView,"/","%2F"); ReplaceStr(strView,"=","%2D"); lr_save_string(lr_eval_string(strView), "viewState6"); memset(strView,0,sizeof(strView));
3. 当然也可以打开一个文件,读取其内容,替换相对应的部分.
Action()
{
//read file
char Data[1024]; //此变量需设置为全局变量,否则会出现定义超长的问题
char buffer[1024]; //此变量需设置为全局变量,否则会出现定义超长的问题
int count = 0;
long file_stream;
char * filename = "C:\\PTTool\\LRscript\\PCL-message\\Demographic\\1.txt";
if ((file_stream = fopen(filename, "rb+")) == NULL ) //读写方式打开文件
{
lr_error_message ("Cannot open %s", filename);
return -1;
}
// 一直读到文件结束
while (!feof(file_stream))
{
fread(buffer, sizeof(char), 1024, file_stream);
//此BUFFER大小可以自行设置,建议设置到接口允许的最大值,经测试,设置过小,而文件较大的时候,读取会出现读不完的问题,原因未知
if (ferror(file_stream))
{
lr_output_message ("Error reading file %s", filename);
break;
}
strcat(Data,buffer);
}
count = strlen(Data);
lr_output_message ("Total number of bytes read = %d", count);
lr_output_message ("Data is = %s", Data);
// Close the file stream
if (fclose(file_stream))
{
lr_error_message ("Error closing file %s", filename);
}
cardNumber=lr_eval_string("{CardNum}");
lr_save_timestamp("paraTime",LAST);
lr_output_message(lr_eval_string("{paraTime}"));
timestp=lr_eval_string("{paraTime}");
// call func
ReplaceStr(Data, "timeStamp",timestp);
ReplaceStr(Data, "cardNumber",cardNumber);
lr_output_message ("Data changed to %s", Data);
//end func
return 0;
}
相关文章推荐
- LoadRunner中自定义C函数实现字符串替换
- 转:LoadRunner获取毫秒及字符串替换实现
- loadrunner 实现字符串替换
- loadrunner获取毫秒及字符串替换实现
- loadrunner实现字符串的替换
- loadrunner通过C语言实现自定义字符出现次数截取对应字符串
- loadrunner获取毫秒及字符串替换实现
- loadrunner获取毫秒及字符串替换实现(字符串replace)
- loadrunner获取毫秒及字符串替换实现
- 实现textarea内字符串选择查询替换功能资料
- 浮点性(float)转化为字符串类型 自定义实现和深入探讨C++内部实现方法
- GridView实现自定义时间货币等字符串格式
- 用SQL语句实现替换字符串
- 用SQL语句实现替换字符串
- 用style来实现把过长的字符串替换为省略号
- 实现一个自定义字符串的排序 ,重写Comparable接口的练习!!
- SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串
- 编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
- GridView实现自定义时间货币等字符串格式:
- SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串