2013-06-27 44 views
0

我是HP Load Runner的新手,試圖將現有C代碼轉換爲與Load Runner兼容。我有一個來自Load Runner的tempStr數組,我試圖將其內容放入​​。我嘗試使用strcpy(lr_eval_string("{tempStr}"),str);,但str中的內容仍爲空。有誰知道我可以如何將tempStr的內容寫入str在Load Runner中將{tempStr}的內容移動到char 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

我只能說在'strcpy(string1,string2);'中string2的內容被賦值給string1,所以string2中的字符串保持不變。 – 0decimal0

回答

0

strcpy(string1,string2);字符串2的內容被分配到string1.So字符數組tempStr in`str,你需要試試這個:

strcpy(str,lr_eval_string("{tempStr}"));。這個應該可以做到。你可以看到聲明over here的相關用法。

您正在申報HUGE ARRAY(​​)或者c_response的尺寸可能大於str,這可能是您獲取該錯誤的原因。取而代之的是,您可以使用malloc動態分配內存,這是一種很好的做法,並且被認爲是安全的。 (通過查看代碼,一切看起來都很好,除非你顯示整個代碼,否則很難說)。

用C聲明非常大的數組是非常糟糕practice.Just看看這個:How many chars can be in a char array?

+0

嗨。我試過,但它不工作。任何想法爲什麼不起作用? – Sakura

+0

這個陳述應該儘可能地發揮其語法的作用,你將不得不提供完整的代碼以便改進,你也應該自己嘗試去發現其他部分的錯誤。 – 0decimal0

+0

我在答案中提供了鏈接。 – 0decimal0

0

我測試了這一點,它的工作完美的罰款,並有可能是一些其他的問題

焦炭海峽[ 1024] = 「測試」;

lr_output_message(「Value is%s」,str);

strcpy(str,lr_eval_string("{NewParam}")); 

lr_output_message("Value is %s", str); 
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'基礎技能的機會,您需要在現在和未來充分利用這些技能。

+0

由於您是LoadRunner和C的新手,因此將LoadRunner設置爲一個時間並學習C.擁有測試工具語言的專業知識是成功的先決條件,無論是使用LoadRunner的C,使用SilkPerfomer的Pascal或使用Jmeter的Java。試圖在學習基礎技能的同時,根據業務技能確定一個失敗的途徑,不管這個角色是作爲性能測試者還是其他任何東西。 –

相關問題