(1)int rand(void)算法
功能:產生隨機數。計算機產生的隨機數都不是真正意義上的隨機數,只是僞隨機數,它以一個真值(也稱爲種子)做爲初始條件,而後用必定的算法不停迭代產生隨機數。 rand()函數不須要參數,它將會返回0到RAND_MAX之間的任意的整數。數組
舉例:dom
一、生成1-100直接的隨機整數函數
int radomNum = rand() % 100+1;測試
二、生成[m,n]範圍之間的隨機整數,能夠套用公式:rand()%(n-m+1)+m。好比生成一個[10,30]的隨機整數:this
int radomNum = rand() % 21+10;spa
三、rand()函數通常要搭配srand(unsigned int seed)一塊兒使用,srand()做用是設置隨機數種子,若未設置,rand()在調用時會自動設隨機數種子爲1。若設置爲固定的種子(或不使用srand),則每次循環輸出的序列都是固定的(VS等IDE是固定的,但Loadrunner測試了一下不是固定的),所以經常使用當前的時間(time(0))做爲種子(精確到秒),這樣只要時間不一樣,循環的序列就不一樣。;指針
/*設置當前時間爲種子,循環輸出5個隨機數*/orm
void SetRandomNum()
{
int radomNum;
int i;
srand(time(0));
for(i=0;i<5;i++)
{
radomNum = rand() % 100+1;
lr_output_message("radomNum is %i",radomNum);
}
}字符串
注意:
一、必定要將srand()放到循環外,循環內的時間過短不足1s,將會致使5個隨機數同樣;
二、在loadrunner中,變量的定義必須在腳本的最開始,系統函數調用以前,須要把int radomNum、int i;這些語句寫到函數最開始,先聲明再使用,不然將會報錯「illegal statement termination」。是因爲Loadrunner12的編譯器原理致使的(C98中規定,在任何執行語句以前,在塊的開頭聲明全部局部變量,但在C99以及C++中則沒有這個限制,這就解釋了在.c下報錯,而在.cpp下不報錯)Loadrunner都屬於C98,即後綴爲.c的文件(例如Action.c)。
(2)int sprintf(char *buffer, const char *format,[ argument] ...)
功能:字符串格式化命令,主要功能是把格式化的數據寫入某個字符串中。經常使用來拼接字符串(而printf是將一個格式化的字符串輸出到屏幕,在LR中不經常使用)
參數說明:
舉例:
一、把整數123 打印成一個字符串保存在s 中
sprintf(s, "%d", 123);
二、將int類型的YmaxNum的參數轉化爲字符串類型
sprintf(Ymax, "%d", YmaxNum);
三、生成一個int類型的隨機數,將其轉化爲字符串類型,並輸出
Action()
{
int radomNum;
char radomChar[10];
radomNum = rand() % 100+1;
sprintf(radomChar,"%d",radomNum); //將int類型的radomNum轉化爲char類型,並存儲在radomChar中
lr_output_message("隨機數是 %s",radomChar);
return 0;
}
//輸出結果:Action.c(7): 隨機數是 55
(3)extern char *strcat(char *str1, const char *str2);
功能:將兩個char類型鏈接,也就是把字符串str2鏈接到字符串str1後面,鏈接後的結果放在字符串str1中。
舉例:
一、定義並拼接2個字符串,再輸出
Action()
{
char d[20]="Golden";
char s[20]="View";
strcat(d,s);
lr_output_message("%s",d); //輸出d,結果爲「GoldenView」
}
二、將日期和時間字符串拼接上2位隨機數並輸出
Action()
{
int radomNum;
char radomChar[10];
radomNum = rand() % 100+1;
sprintf(radomChar,"%d",radomNum); //將int類型的radomNum轉化爲char類型,並存儲在radomChar中
lr_save_datetime("%Y%m%d_%H%M%S",DATE_NOW,"dateTime"); //將當期日期時間存儲到參數dateTime中
lr_output_message("issueName is %s",strcat(lr_eval_string("{dateTime}"),radomChar)); //將日期和時間字符串拼接上2位隨機數並輸出
return 0;
}
(4)char *strcpy(char *str1, const char *str2);
功能:複製字符串,將str2的內容複製到str1中。(若是想把一個字符串的一部分複製到另外一個字符串的某個位置可使用strncpy()函數)
舉例:
char str2[100]="這是一個例子";
char str1[100];
strcpy(str1,str2);
lr_output_message("str1的值爲%s",str1);
(5)unsigned int strlen(char *s)
功能:獲取字符串長度,不包括結束符NULL。若是字符的個數等於字符數組的大小,那麼strlen()的返回值就沒法肯定,得出的結果是錯誤的,strlen()會繼續向後檢索,直到遇到'\0'。因此下方例子中s3的長度不對,但s4的長度正確(\0表明字符數串的結束標誌);
舉例:
char *s1="這是一個例子";
char s2[100] = "這是一個關於Loadrunner的strlen()函數的例子";
char s3[5] = "12345";
char s4[7] = "12345\0";
lr_output_message("字符串的s1的長度是:%d",strlen(s1));
lr_output_message("字符串的s2的長度是:%d",strlen(s2));
lr_output_message("字符串的s3的長度是:%d",strlen(s3));
lr_output_message("字符串的s4的長度是:%d",strlen(s4));
運行結果:
Action.c(47): 字符串的s1的長度是:12
Action.c(48): 字符串的s2的長度是:42
Action.c(49): 字符串的s3的長度是:10
Action.c(50): 字符串的s4的長度是:5
(6)char *strchr(const char *str, int c)
功能:查找字符串str中首次出現字符c的位置,若是未找到該字符則返回 NULL。(str -- 要被檢索的 C 字符串,c -- 在 str 中要搜索的字符)
舉例:
一、輸出「www.baidu.com」中第一個「.」後面的字符串
char str[] = "www.baidu.com";
char ch = '.';
lr_output_message("|%c| 以後的字符串是 - |%s|\n",ch,strchr(str, ch));
//輸出結果:|.|以後的字符串是-|.baidu.com|
二、輸出字符「c」第一次出現的位置
char *str="www.baidu.com";
char *str1;
str1 = (char *)strchr(str,'c');
lr_output_message("c第一次出現是在%s",str1);
//輸出結果:com
(7)char *strrchr(const char *str, int c)
功能:查找字符串str中最後一次出現字符c的位置,若是未找到該字符則返回 NULL。(str -- 要被檢索的 C 字符串,c -- 要搜索的字符。以 int 形式傳遞,可是最終會轉換回 char 形式)
舉例:
一、輸出「www.baidu.com」中最後一個「w」後面的字符串
char str[] = "www.baidu.com";
char ch = 'w';
char *ret = (char *)strrchr(str,ch);
lr_output_message("|%c| 以後的字符串是 - |%s|\n",ch,ret);
//輸出結果:w.baidu.com
(8)char *strupr(char *str);
功能:將指向的字符串所有轉換爲大寫的形式
char str[20] ="This is a test Demo";
char *str1 = NULL;
str1 = (char *)strupr(str);
lr_output_message("str的內容轉化爲大寫爲%s",str1);
//輸出結果:THIS IS A TEST DEMO
(8)char *strlwr(char *str);
功能:將指向的字符串所有轉換爲小寫的形式
char str[20] ="This is a test Demo";
lr_output_message("str的內容轉化爲大寫爲%s",strlwr(str));
//輸出結果:this is a test demo
(9)extern int strnicmp(char *st1,char * st2,int n)
功能:(不區分大小寫)比較字符串str1和str2的前n個字符串字典序的大小,經常使用來比較兩個字符串是否同樣。
說明:比較是這樣進行的,先比較兩個字符串的第1個字符字典序的大小,若是能比較出大小,則立刻返回了,若是不能區別大小,開始比較第2個,若是這時第1個字符串已經到盡頭了,第2個字符串還有字符,這時算第2個字符串大
當s1<s2時,返回值-1<0
當s1=s2時,返回值=0
當s1>s2時,返回值1>0
相似的函數:
extern int strncmp(char *s1,char * s2,int n); //(區分大小寫)比較字符串str1和str2的前n個字符串字典序的大小
extern int strcmp(char *s1,char * s2); //(區分大小寫)比較字符串str1和str2的字典序的大小
extern int stricmp(char *s1,char * s2);//(不區分大小寫)比較字符串str1和str2的字典序的大小
舉例:不區分大小寫比較str1和str2字符串,前10位是否同樣
char str1[100] ="Welcome to the HP LoadRunner Online Function Reference";
char str2[100]="WELCOME TO THE HP LOADRUNNER ONLINE FUNCTION REFERENCE";
int num;
num = strnicmp(str1,str2,10);
if(num == 0)
lr_output_message("str1 == str2");
else if(num > 0)
lr_output_message("str1 > str2");
else if(num < 0)
lr_output_message("str1 < str2");
//輸出結果str1 == str2