51Testing软件测试论坛

标题: 关于字符串的各种函数的操作 [打印本页]

作者: 神樂    时间: 2012-4-10 15:33
标题: 关于字符串的各种函数的操作
  1. Action()
  2. {
  3.         char *a="welcome to dewei.";//char a[100]="welcome";
  4.         char b[32]="my name is.";
  5.         char c[32]="lilizhoudechengbao.";
  6.        
  7. /*尝试输出地址int m;
  8.         int n;
  9.         int k;
  10.         char o;
  11.         //char *o="mark";
  12.         m=atoi(&a);
  13.         n=atoi(&b);
  14.         k=atoi(&c);
  15.         m=1;
  16.         n=101;
  17.         k=133;
  18.         o=itoa(n);
  19.         lr_output_message ("o为:%s",o);*/
  20.         /*strcpy和strncpy,memcpy的区别
  21.         strcpy(b,a);//将a复制给b以后,然后b数组就直接指向a的指针,返回b数组的指针就等于a的指针。lr_out出来是a指针所指内存中的内容
  22.         lr_output_message ("字符串a中为:%s",a);
  23.         lr_output_message ("字符串b中为:%s",b);
  24.         strncpy(c,a,4);//将字符串a,从开始截取到第4位,复制到字符串c里面,如果c中有数据并大于4个字符,则替换c中前面4个字符。
  25.         lr_output_message ("字符串c中为:%s",c);
  26.         strcpy(b,"abc\0def");
  27.         lr_output_message ("字符串b中为:%s",b);//在字符串中\0代表结束符,因此只要abc被复制到a中了
  28.         lr_output_message("隐藏的字符串为:%s",b+4);
  29.     strncpy(c,"abc\0def",6);//在字符串中\0代表结束符,因此只要abc被复制到a中了
  30.         lr_output_message ("字符串c中为:%s",c);
  31.         memcpy(b,"abc\0def",7);//在字符串中\0代表结束符,因此只要abc被复制到a中了
  32.         lr_output_message ("字符串b中为:%s",b);
  33.     lr_output_message("隐藏的字符串为:%s",b+4);*/

  34.         strcat(b,c);//将字符串c中的内容加到字符串b内容的末尾
  35.         lr_output_message ("字符串b中为:%s",b);
  36.     //lr_output_message ("b的地址为%d",n);
  37.         lr_output_message ("字符串c中为:%s",c);
  38.         //lr_output_message ("c的地址为%d",atoi(&c));
  39.         strcat(b,a);
  40.         lr_output_message ("字符串b中为:%s",b);
  41.         //lr_output_message ("b的地址为%d",n);
  42.         lr_output_message ("字符串c中为:%s",c);
  43.         //lr_output_message ("c的地址为%d",k);
  44.         strcat(b,"eleven");
  45.         lr_output_message ("字符串b中为:%s",b);
  46.         //lr_output_message ("b的地址为%d",n);
  47.         lr_output_message ("字符串c中为:%s",c);
  48.         //lr_output_message ("c的地址为%d",k);
  49.         strncat(c," is my name",6);
  50.         lr_output_message ("字符串c中为:%s",c);
  51.         //lr_output_message ("c的地址为%d",k);
  52.         return 0;
  53. }
复制代码


测试新人一枚,也没有人带。只能自己摸索。。。。
在上面代码中。strcpy和strncpy,memcpy注释掉的部分,发现加了第三类后,第二类中即第三个函数那也能输出隐藏的字符串。好奇ing,loadrunner中函数应该也是先后执行的吧?
下面没有注释掉的函数中,c字符串输出很诡异。竟然会出现a中的字符。我对c只进行了最后一个函数的操作啊,没道理会这样。然后我猜测是数组太小。发现改成100后,输出结果正常了。
loadrunner难道对数组操作时,超过范围不进行提示吗?
作者: 云层    时间: 2012-4-10 15:42
有些乱,看的头晕。
作者: 神樂    时间: 2012-4-10 15:46
本帖最后由 神樂 于 2012-4-10 15:48 编辑

回复 2# 云层 可以分成2个action
  1. Action()
  2. {
  3.         char *a="welcome to dewei.";//char a[100]="welcome";
  4.         char b[100]="my name is.";
  5.         char c[320]="lilizhoudechengbao.";
  6.         strcpy(b,a);//将a复制给b以后,然后b数组就直接指向a的指针,返回b数组的指针就等于a的指针。lr_out出来是a指针所指内存中的内容
  7.         lr_output_message ("字符串a中为:%s",a);
  8.         lr_output_message ("字符串b中为:%s",b);
  9.         strncpy(c,a,4);//将字符串a,从开始截取到第4位,复制到字符串c里面,如果c中有数据并大于4个字符,则替换c中前面4个字符。
  10.         lr_output_message ("字符串c中为:%s",c);
  11.         strcpy(b,"abc\0def");
  12.         lr_output_message ("字符串b中为:%s",b);//在字符串中\0代表结束符,因此只要abc被复制到a中了
  13.         lr_output_message("隐藏的字符串为:%s",b+4);
  14.     strncpy(c,"abc\0def",6);//在字符串中\0代表结束符,因此只要abc被复制到a中了
  15.         lr_output_message ("字符串c中为:%s",c);
  16.         memcpy(b,"abc\0def",7);//在字符串中\0代表结束符,因此只要abc被复制到a中了
  17.         lr_output_message ("字符串b中为:%s",b);
  18.     lr_output_message("隐藏的字符串为:%s",b+4);
  19. return 0;
  20. }
复制代码

作者: 神樂    时间: 2012-4-10 15:47
回复 2# 云层
  1. Action()
  2. {
  3.         char *a="welcome to dewei.";//char a[100]="welcome";
  4.         char b[100]="my name is.";
  5.         char c[320]="lilizhoudechengbao.";
  6.                 strcat(b,c);//将字符串c中的内容加到字符串b内容的末尾
  7.         lr_output_message ("字符串b中为:%s",b);
  8.     //lr_output_message ("b的地址为%d",n);
  9.         lr_output_message ("字符串c中为:%s",c);
  10.         //lr_output_message ("c的地址为%d",atoi(&c));
  11.         strcat(b,a);
  12.         lr_output_message ("字符串b中为:%s",b);
  13.         //lr_output_message ("b的地址为%d",n);
  14.         lr_output_message ("字符串c中为:%s",c);
  15.         //lr_output_message ("c的地址为%d",k);
  16.         strcat(b,"eleven");
  17.         lr_output_message ("字符串b中为:%s",b);//字符串b中为:my name is shenyinghongeleven
  18.         //lr_output_message ("b的地址为%d",n);
  19.         lr_output_message ("字符串c中为:%s",c);
  20.         //lr_output_message ("c的地址为%d",k);
  21.         strncat(c," is my name",6);
  22.         lr_output_message ("字符串c中为:%s",c);  //字符串c中为:shenyinghong is my
  23.         //lr_output_message ("c的地址为%d",k);
  24.         return 0;
  25. }
复制代码


作者: ycw    时间: 2012-4-10 16:24
LZ要是能分开举例就好了,
作者: 云层    时间: 2012-4-10 16:33
其实你要在LR中操作字符串不用那么复杂的,常用的无非就是
lr_save_var
lr_save_string
strcpy
strcat
sscanf
sprintf
atoi
itoa
作者: msnshow    时间: 2012-4-10 22:45
就是函数的组合使用了
作者: 神樂    时间: 2012-4-11 11:26
回复 7# msnshow


    组合使用就会相互影响吗?发现如果只一个函数一个函数使用就不会出现这样的情况。
作者: 神樂    时间: 2012-4-11 11:27
回复 6# 云层


    哦!好吧!不知道,所以都学习了下!




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