我是HP Load Runner的新手,正在尝试将现有的C代码转换为与Load Runner兼容。我有一个来自Load Runner的数组tempStr
,我试图将其内容放入char str[1024]
。我尝试使用strcpy(lr_eval_string("{tempStr}"),str);
,但str
中的内容仍为空。有谁知道如何将tempStr
的内容添加到str
?
编辑: 我的代码是:
char str[1024];
strcpy(str,lr_eval_string("{c_Response}"));
我收到以下错误:
Ccode.c(22): Error: C interpreter run time error: Ccode.c (22): Error -- memory violation : Exception ACCESS_VIOLATION received.
Ccode.c(22): Error: An exception was raised while calling invocation function in interpreter extension cciext.dll: System Exceptions: EXCEPTION_ACCESS_VIOLATION.
答案 0 :(得分:0)
在strcpy(string1,string2);
中,string2的内容被分配给string1.So如果你想将字符数组tempStr
的内容放在`str中,你需要试试这个:
strcpy(str,lr_eval_string("{tempStr}"));
。这应该可以解决问题。您可以看到语句over here的相关用法。
您宣布巨额阵营(char str[1024]
)或c_response
的大小可能超过str
,这可能是您收到该错误的原因。除此之外,您可以使用malloc
动态分配内存,这是一种很好的做法并且被认为是安全的。
(通过查看代码,一切看起来都很好,再次,除非你显示整个代码很难说)。
在C中声明非常大的数组是非常糟糕的做法。只需看一下:How many chars can be in a char array?
答案 1 :(得分:0)
我已经测试了这个并且它的工作非常好,可能还有其他一些问题
char str [1024] =“test”;
lr_output_message(“Value is%s”,str);
strcpy(str,lr_eval_string("{NewParam}"));
lr_output_message("Value is %s", str);
答案 2 :(得分:0)
你有一个类型不匹配,strcpy需要两个指针。
Action()
{
char str[500]="";
lr_save_string("abcdefg123456789","my_foo");
strcpy((char *)str,lr_eval_string("{my_foo}"));
lr_message(str);
return 0;
}
运行上面的内容,看看会发生什么。了解为什么(char *)在您继续前进之前解决问题。这是一个提升'C'基础技能的机会,你现在和未来都需要利用它。