51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1971|回复: 8
打印 上一主题 下一主题

[原创] 关于字符串的各种函数的操作

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-4-10 15:33:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  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难道对数组操作时,超过范围不进行提示吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2012-4-10 15:42:44 | 只看该作者
有些乱,看的头晕。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2012-4-10 15:46:56 | 只看该作者
本帖最后由 神樂 于 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. }
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-4-10 15:47:57 | 只看该作者
回复 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. }
复制代码

回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2012-4-10 16:24:10 | 只看该作者
LZ要是能分开举例就好了,
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2012-4-10 16:33:13 | 只看该作者
其实你要在LR中操作字符串不用那么复杂的,常用的无非就是
lr_save_var
lr_save_string
strcpy
strcat
sscanf
sprintf
atoi
itoa
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    7#
    发表于 2012-4-10 22:45:47 | 只看该作者
    就是函数的组合使用了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2012-4-11 11:26:58 | 只看该作者
    回复 7# msnshow


        组合使用就会相互影响吗?发现如果只一个函数一个函数使用就不会出现这样的情况。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2012-4-11 11:27:32 | 只看该作者
    回复 6# 云层


        哦!好吧!不知道,所以都学习了下!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 15:05 , Processed in 0.072560 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表