51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4518|回复: 9
打印 上一主题 下一主题

[原创] 使用LR生成随机字符串参数[征求更好的算法]

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-12-15 17:21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 云层 于 2011-12-16 14:05 编辑

发现自己C语言还是蛮烂的,写了一个随机字符串的写法在LR中用来解决一些需要输入属性赋值问题,但是总觉得这个写法不好,征求一个更好的写法:
主要是LR的C貌似不能用char这类的取ascii码

研究了一下换了个写法,这种写法效率应高很多了,利用了%c的转码功能
  1. char *randstring1(int slen)
  2. {
  3.         int i,randid;
  4.         char temp[100]="";
  5.     char character_set[52] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N','O', 'P','Q', 'R', 'S', 'T','U', 'V', 'W', 'X','Y', 'Z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l','m', 'n', 'o', 'p', 'q', 'r','s', 't', 'u', 'v', 'w', 'x','y','z'};

  6.         for(i=1;i<=slen;i++)
  7.         {
  8.                 randid=rand()%52;
  9.                 sprintf(temp,"%s%c",temp,character_set[randid]);
  10.         }
  11.         return(temp);
  12. }Action(){        lr_output_message(randstring1(5));        return 0;}
复制代码




下面的这种老写法大家随便看看
  1. void randstring(int slen)
  2. {
  3.         int x,randid,i;
  4.         char *smsg,temp[100];
  5.         smsg="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  6.         x=strlen(smsg);
  7.         for(i=1;i<=slen;i++)
  8.         {
  9.                 randid=rand()%x+1;
  10.                 lr_save_var(smsg+randid,1,0,"test");
  11.                 strcat(temp,lr_eval_string("{test}"));
  12.         }
  13.         lr_save_string(temp,"randstring");
  14. }
  15. Action()
  16. {
  17.         randstring(5);
  18.         lr_output_message(lr_eval_string("{randstring}"));
  19.         return 0;
  20. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-12-15 17:56:18 | 只看该作者
C已经忘记得差不多了
第一个对我已经完全够了
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2014-10-16 09:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2011-12-16 10:05:37 | 只看该作者
    没学过C语言的,查了半天rand()%52是什么意思
    话说,为什么不是56 ?'w', 'x','y','z'都不需要么
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2011-12-16 11:56:24 | 只看该作者
    回复 3# mymagic


       开始我也以为为啥不%56,后来仔细看了代码,发现character_set数组里面存的就是52个元素,所以去随机数时%52。不要被云版定义character_set[56] 长度数组欺骗了。 哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-16 09:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2011-12-16 13:44:13 | 只看该作者
    回复 4# 亚瑟王


        啊  对  英文26个字母

    云层太狡猾了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2011-12-16 14:05:41 | 只看该作者
    其实是我自己脑袋一热数组定义大了。。。。表示误导了大家。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2011-12-16 16:19:02 | 只看该作者
    看了半天没有发现哪里有定义了56
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-10-16 09:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2011-12-16 16:47:22 | 只看该作者
    回复 7# wcg57


       
    云层改了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2011-12-16 16:55:18 | 只看该作者
    C 语言都忘光了 不知怎么写了~~~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2011-12-18 20:39:30 | 只看该作者
    了解
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-7 18:08 , Processed in 0.069855 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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