51Testing软件测试论坛

标题: 请问在lr中如何截取字符串的中的一部份? [打印本页]

作者: honglong    时间: 2007-7-24 18:11
标题: 请问在lr中如何截取字符串的中的一部份?
我把一个字符串参数化后,发现另一个字符串是依赖前一个字符串的,例如:第一字符串是:001008, 第二个字符串就是001;或第一字符串是:北京西城区, 第二个字符串就是北京。所以我想问如何从一个字符串中截取一部份或多部份。
还有个问题就是,我声明了个变量,可是如何让这个变量等于参数化的值哪?谢谢了。
作者: spartan    时间: 2007-7-24 18:42
标题: 回复 #1 honglong 的帖子
1.截取某个字符中的某几位代码:

下面的列子是:截取字符串"ABCDEFG"中, 从第三位开始连续两位的字符,即:CD.

int k;
char  tempstr2[30];
char *strtmp="ABCDEFG";

   for (k=1;k<3;k++)
      {
      strtmp++;
      }
lr_output_message( "strtmp=%s",strtmp);
strncpy(tempstr2,strtmp,2);
lr_output_message( "tempstr2=%s",tempstr2);


2.将某个变量的值赋值给某个参数

下面的列子是:将上段代码中变量tempstr2的值,赋值给参数列表中的参数temp,并且显示出来。
lr_save_string(tempstr2,"temp");
lr_output_message("the velue is:%s",lr_eval_string("{temp}"));
作者: Zee    时间: 2007-7-24 18:47
顶楼上。
作者: haiquan180    时间: 2007-7-24 19:21
顶上  很久以前我急需这个
作者: honglong    时间: 2007-7-24 22:28
太牛了!就是看着有点晕。看来要好好看看c的书了。太感谢spartan 了。
作者: rickyzhu    时间: 2007-7-24 22:40
好好复习复习c吧,其实LoadRunner中的编程语言就是c的一个子集。
作者: hhy0824    时间: 2007-7-25 09:10
能把代码解释一下吗?for(k=1){} 那个循环是什么意思呀?
作者: spartan    时间: 2007-7-25 09:48
标题: 回复 #7 hhy0824 的帖子
for (k=1;k<3;k++)
      {
      strtmp++;
      }

strtmp是个指针。 strtmp++:指针位置往后移动一位。

1.  循环开始前,指针指在第一个字符上。即:ABCDEFG

2. K=1,满足循环条件。指针望后移动一位,指在第二个字符上了。 即:ABCDEFG

3. K=2,满足循环条件。指针望后移动一位,指在第三个字符上了。 即:ABCDEFG

4. K=3,不满足循环条件。指针位置不移动,仍然指在第三个字符上。 即:ABCDEFG

所以:经过这个循环之后,指针的位置在第三个字符上。 即:ABCDEFG

[ 本帖最后由 spartan 于 2007-7-25 09:50 编辑 ]
作者: 筷子    时间: 2007-7-25 10:00
sdlkfj2 强
作者: honglong    时间: 2007-7-25 14:09
今天试验时发现一个小问题,请教一下spartan 。char *strtmp="ABCDEFG";
赋值一个字符串,但是如何把一个字符类型的变量赋值给*strtmp。
作者: qiguojie    时间: 2007-7-25 14:33
ls理解有错误,*strtmp是指针变量,要赋值也必须是指针变量,而不能把字符类型赋值给指针,只能把字符值的指针赋值给其他指针变量
作者: spartan    时间: 2007-7-25 17:05
原帖由 honglong 于 2007-7-25 14:09 发表
今天试验时发现一个小问题,请教一下spartan 。char *strtmp="ABCDEFG";
赋值一个字符串,但是如何把一个字符类型的变量赋值给*strtmp。


你的意思是:程序有个字符类型的变量, 比如说是: empstr,它的值是:jordan, 即:empstr=“jordan”;同时有个指针变量: *temp, 如何将empstr的值jordan赋值给指针变量 *temp, 对吗? 

[ 本帖最后由 spartan 于 2007-7-25 17:07 编辑 ]
作者: spartan    时间: 2007-7-25 18:36
我将字符型变量赋值给指针,数组赋值给指针,同样数据类型的指针相互赋值,常量字符串赋值给指针都罗列了一下。应该会对楼主有所帮助的。

point_01()
{
          int k;
                 char *point1, *point2;
                 char str1;
                 char  array1[300];
                 char  result1[300],result2[300],result3[300],result4[300];

/* 相同类型的指针之间的赋值,将指针point1已经有的值赋给指针point2; */
                   point1="ABCDEFGH";
                   point2=point1;
                   for (k=1;k<3;k++)
                          {
                          point2++;
                          }
                 strncpy(result1,point2,3);
                 lr_output_message( "指针相互赋值的结果result1=%s",result1);
               
               
/*变量的值赋给相同数据类型的指针*/
              str1='S';//注意:使用char型变量,只能定义一个字符。
                  point2=&str1;
                   for (k=1;k<1;k++)
                          {
                          point2++;
                          }
                 strncpy(result2,point2,3);
                 lr_output_message( "变量赋值给指针的结果result2=%s",result2);

/* 把数组的值赋予指向数组的指针变量,array1 为数组,将其值赋予指针point1; */
        strcpy(array1,"helloloadrunner");
                point1=array1;
                 for (k=1;k<3;k++)
                  {
                  point1++;
                  }
                strncpy(result3,point1,3);
                lr_output_message( "数组赋值给指针的结果result3=%s",result3);

/*把字符串赋予指向字符类型的指针变量, 将字符串"youareboy"赋值给指针point1;*/
                   point1="youareboy";
                   for (k=1;k<3;k++)
                          {
                          point1++;
                          }
                 strncpy(result4,point1,3);
                 lr_output_message( "字符串赋值给指针的结果result4=%s",result4);

        return 0;
}

[ 本帖最后由 spartan 于 2007-7-25 18:38 编辑 ]
作者: spartan    时间: 2007-7-26 11:44
原帖由 honglong 于 2007-7-24 18:11 发表
我把一个字符串参数化后,发现另一个字符串是依赖前一个字符串的,例如:第一字符串是:001008, 第二个字符串就是001;或第一字符串是:北京西城区, 第二个字符串就是北京。所以我想问如何从一个字符串中截取 ...


之前告诉你的是:用指针循环的方式完成的。现在有更简便的方法,直接用LR的函数+数组的方式完成。不需要使用指针了!!
请看如下的代码:

现有一个字符串:"ABCDEFG", 现要从第三位开始,连续取两位字符,即"DE"! 取值代码如下
  char array1[20];
  char array2[20];

  strcpy(array1,"ABCDEFG");
  strncpy(array2,&array1[3],2);      //&array1[3]表示的值是:"CDEFG"
  lr_output_message("Value is:%s", array2);

[ 本帖最后由 spartan 于 2007-7-26 11:54 编辑 ]
作者: duola1119    时间: 2007-7-26 12:34
看得出spartan是个函数高手.
关于截取字符的问题,之前有过这类的贴子.可以找找看一看.不过spartan回答的相当好.支持一下.
作者: hatting_001    时间: 2007-7-26 13:57
标题: 继续学习中
继续学习中
作者: honglong    时间: 2007-7-26 17:38
牛!估计今天晚上有的看了。
作者: lix43420    时间: 2010-3-15 22:25
原帖由 spartan 于 2007-7-24 18:42 发表
1.截取某个字符中的某几位代码:

下面的列子是:截取字符串"ABCDEFG"中, 从第三位开始连续两位的字符,即:CD.

int k;
char  tempstr2[30];
char *strtmp="ABCDEFG";

   for (k=1;k

挺不错的。。。很实用,可惜lr_save_var()不够强,如果option参数能设置为第几位开始,那就爽了~~~
作者: RubyWei    时间: 2012-6-9 15:10
学习了,用这个方法确实解决了我的问题




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2