云层 发表于 2011-12-15 17:21:54

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

本帖最后由 云层 于 2011-12-16 14:05 编辑

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

研究了一下换了个写法,这种写法效率应高很多了,利用了%c的转码功能
char *randstring1(int slen)
{
      int i,randid;
      char temp="";
    char character_set = {'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'};

      for(i=1;i<=slen;i++)
      {
                randid=rand()%52;
                sprintf(temp,"%s%c",temp,character_set);
      }
      return(temp);
}Action(){      lr_output_message(randstring1(5));      return 0;}



下面的这种老写法大家随便看看
void randstring(int slen)
{
      int x,randid,i;
      char *smsg,temp;
      smsg="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
      x=strlen(smsg);
      for(i=1;i<=slen;i++)
      {
                randid=rand()%x+1;
                lr_save_var(smsg+randid,1,0,"test");
                strcat(temp,lr_eval_string("{test}"));
      }
      lr_save_string(temp,"randstring");
}
Action()
{
      randstring(5);
      lr_output_message(lr_eval_string("{randstring}"));
      return 0;
}

mr.bee 发表于 2011-12-15 17:56:18

C已经忘记得差不多了
第一个对我已经完全够了:lol

mymagic 发表于 2011-12-16 10:05:37

:lol没学过C语言的,查了半天rand()%52是什么意思
话说,为什么不是56 ?'w', 'x','y','z'都不需要么

亚瑟王 发表于 2011-12-16 11:56:24

回复 3# mymagic


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

mymagic 发表于 2011-12-16 13:44:13

回复 4# 亚瑟王


    啊对英文26个字母

云层太狡猾了;P

云层 发表于 2011-12-16 14:05:41

其实是我自己脑袋一热数组定义大了。。。。表示误导了大家。。

wcg57 发表于 2011-12-16 16:19:02

看了半天没有发现哪里有定义了56

mymagic 发表于 2011-12-16 16:47:22

回复 7# wcg57


   
云层改了;P

tianmingyang 发表于 2011-12-16 16:55:18

C 语言都忘光了 不知怎么写了~~~~

wangyanzhao 发表于 2011-12-18 20:39:30

了解
页: [1]
查看完整版本: 使用LR生成随机字符串参数[征求更好的算法]