喵小妖7117 发表于 2016-10-8 14:08:02

关于lr_paramarr_random()的使用

以下是我的脚本:
Action()
{

    char TestArray;
    char *temp;
    temp="12";

    lr_save_string("1","TestArray_1");
    lr_save_string("12","TestArray_2");
    lr_save_string("11","TestArray_3");
    lr_save_string("122","TestArray_4");
    lr_save_string("13","TestArray_5");

    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_1}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_2}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_3}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_4}"));
    lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_5}"));

   temp = lr_paramarr_random("TestArray");

    //lr_save_string(lr_paramarr_random("{TestArray}"),"temp");

    lr_output_message("数组的随机值%s",temp);
   

    return 0;
}


为什么获取到的temp是空值?怎样可以随机输出数组中的值???


还有用lr_paramarr_idx(TestArray,0);去固定数组的值,怎么输出这个固定数组的值???


请大家指教!!!


Nio 发表于 2016-10-8 14:08:03

lr_save_string("1","TestArray_1");
这个并没有实现将1存到“TestArray”这个char中,而是存在了“TestArray_1”这个char中

c语言中,char str 表示str可以存放10个字母的字符,不是其它语言的char(string)型的数组;

喵小妖7117 发表于 2016-10-8 14:39:21

自己顶!!!!

jingzizx 发表于 2016-10-8 15:24:30

参数数组必须满足以下两个条件:

1.参数必须都是以相同的名字开头,后面接下划线加数字的方式顺序赋值。

2.参数数组必须有一个“参数名_count”的参数来记录数组的长度

jingzizx 发表于 2016-10-8 15:24:50

char TestArray;
把这个定义去了试试

喵小妖7117 发表于 2016-10-8 15:50:58

jingzizx 发表于 2016-10-8 15:24
char TestArray;
把这个定义去了试试

没有用。


这个函数是可以的:

        sss = lr_paramarr_idx("TestArray",1);
        lr_output_message("数组的固定值%s",sss);


但是lr_paramarr_len()这个跟lr_paramarr_random()一样都不行。

fhhh_eyou 发表于 2016-10-8 17:23:53

char TestArray;
       char *temp;
       temp="12";

1.定义类型错误。char ?空temp 定义类型。
2.取值错误。lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_5}"));

喵小妖7117 发表于 2016-10-9 08:46:56

fhhh_eyou 发表于 2016-10-8 17:23
char TestArray;
       char *temp;
       temp="12";


1、数组是这样定义的哦。char paramArrayName;
2、lr_output_message("数组的第一个值%s",lr_eval_string("{TestArray_5}"));这句话能够正常输出,没有错哦。
3、无法正常输出的是lr_paramarr_random()这个函数的部分

喵小妖7117 发表于 2016-10-9 09:18:47

我补充一下问题。
1、随机取数组值函数lr_paramarr_random 运行之后取值为null
脚本如下:
      char *value;
        char TestArray;
        lr_save_string("testA","TestArray_1");
        lr_save_string("testB","TestArray_2");
      lr_save_string("testC","TestArray_3");
      value=lr_paramarr_random("TestArray");      //获取数组的随机值
        lr_output_message("value=%s",value);      //输出value=null


2、获取数组长度函数lr_paramarr_len运行 后输出的长度为0
脚本如下:


         int len;
        int count;
        char TestArray;
        lr_save_string("testA","TestArray_1");
        lr_save_string("testB","TestArray_2");
        lr_save_string("testC","TestArray_3");

        len=lr_paramarr_len("TestArray");   //获取数组长度方法1

        count=atoi(lr_eval_string("TestArray_count"));   //获取数组长度方法2

        lr_output_message("数组的长度len=%d",len);      //输出len=0

        lr_output_message("数组的长度count=%d",count);    //输出count=0


大家有知道为什么的吗?求解答。

喵小妖7117 发表于 2016-10-9 15:49:06

顶顶顶

喵小妖7117 发表于 2016-10-11 15:29:54

这个问题我解决了,请看下面的解答!

喵小妖7117 发表于 2016-10-11 15:32:30

因为使用关联函数获取的数组是有长度的,而我自定义的数组没有初始化数组长度,所以导致lr_paramarr_len()和lr_paramarr_random()函数获取的值不正确。

下面试正确的脚本:
1、关于lr_paramarr_len()
@@@int lr_paramarr_len(const char * paramArrayName);

        char TestArray;      //声明一个数组变量
        int count;          //声明一个整型变量用于保存数组的长度
        int len;

        lr_save_string("test","TestArray_1");      //初始化数组的每个元素
        lr_save_string("a","TestArray_2");
        lr_save_string("array","TestArray_3");

        lr_save_string("3","TestArray_count");   //初始化数组的长度


        count=lr_paramarr_len("TestArray");   //获取数组的长度
        lr_output_message("数组的长度是:%d",count);   //输出数组的长度


2、关于lr_paramarr_len()

@@@lr_eval_string(“{paramArrayName _count}”);
        char TestArray;      //声明一个数组变量

        lr_save_string("test","TestArray_1");      //初始化数组的每个元素
        lr_save_string("a","TestArray_2");
        lr_save_string("array","TestArray_3");

        lr_save_string("3","TestArray_count");   //初始化数组的长度


        //这里注意,使用lr_eval_string()函数获取到的变量是字符型
        // 需要用atoi()强制转为整型变量,才能正确输出
        lr_output_message("数组的长度是:%d",atoi(lr_eval_string("{TestArray_count}")));   //输出数组的长度


3、关于lr_paramarr_random()
@@@char * lr_paramarr_random(const char * paramArrayName);
        char TestArray;      //声明一个数组变量
        char *str;    //定义一个变量来保存数组的元素

        lr_save_string("test","TestArray_1");      //初始化数组的每个元素
        lr_save_string("a","TestArray_2");
        lr_save_string("array","TestArray_3");

        lr_save_string("3","TestArray_count");   //初始化数组的长度

        str=lr_paramarr_random("TestArray");       //随机获取数组中的某个元素值保存到变量str中

        lr_output_message("数组的随机值%s",str);      //输出变量str的值,即数组的随机元素值


注意,这里一定要有【lr_save_string("3","TestArray_count");   //初始化数组的长度 】,不然执行的结果是错误的哦!


大家可以自己试试!

喵小妖7117 发表于 2016-10-24 08:41:07

Nio 发表于 2016-10-20 16:47
lr_save_string("1","TestArray_1");
这个并没有实现将1存到“TestArray”这个char中,而是存在了“TestAr ...

我知道 是将1存到TestArray_1中。

但是你说的char str是表示可以存放10个字母的字符,我有点晕。
页: [1]
查看完整版本: 关于lr_paramarr_random()的使用