神樂 发表于 2012-4-10 15:33:58

关于字符串的各种函数的操作

Action()
{
        char *a="welcome to dewei.";//char a="welcome";
        char b="my name is.";
        char c="lilizhoudechengbao.";
       
/*尝试输出地址int m;
        int n;
        int k;
        char o;
        //char *o="mark";
        m=atoi(&a);
        n=atoi(&b);
        k=atoi(&c);
        m=1;
        n=101;
        k=133;
        o=itoa(n);
        lr_output_message ("o为:%s",o);*/
        /*strcpy和strncpy,memcpy的区别
        strcpy(b,a);//将a复制给b以后,然后b数组就直接指向a的指针,返回b数组的指针就等于a的指针。lr_out出来是a指针所指内存中的内容
        lr_output_message ("字符串a中为:%s",a);
        lr_output_message ("字符串b中为:%s",b);
        strncpy(c,a,4);//将字符串a,从开始截取到第4位,复制到字符串c里面,如果c中有数据并大于4个字符,则替换c中前面4个字符。
        lr_output_message ("字符串c中为:%s",c);
        strcpy(b,"abc\0def");
        lr_output_message ("字符串b中为:%s",b);//在字符串中\0代表结束符,因此只要abc被复制到a中了
        lr_output_message("隐藏的字符串为:%s",b+4);
    strncpy(c,"abc\0def",6);//在字符串中\0代表结束符,因此只要abc被复制到a中了
        lr_output_message ("字符串c中为:%s",c);
        memcpy(b,"abc\0def",7);//在字符串中\0代表结束符,因此只要abc被复制到a中了
        lr_output_message ("字符串b中为:%s",b);
    lr_output_message("隐藏的字符串为:%s",b+4);*/

        strcat(b,c);//将字符串c中的内容加到字符串b内容的末尾
        lr_output_message ("字符串b中为:%s",b);
    //lr_output_message ("b的地址为%d",n);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",atoi(&c));
        strcat(b,a);
        lr_output_message ("字符串b中为:%s",b);
        //lr_output_message ("b的地址为%d",n);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",k);
        strcat(b,"eleven");
        lr_output_message ("字符串b中为:%s",b);
        //lr_output_message ("b的地址为%d",n);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",k);
        strncat(c," is my name",6);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",k);
        return 0;
}

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

云层 发表于 2012-4-10 15:42:44

有些乱,看的头晕。

神樂 发表于 2012-4-10 15:46:56

本帖最后由 神樂 于 2012-4-10 15:48 编辑

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

神樂 发表于 2012-4-10 15:47:57

回复 2# 云层 Action()
{
        char *a="welcome to dewei.";//char a="welcome";
        char b="my name is.";
        char c="lilizhoudechengbao.";
                strcat(b,c);//将字符串c中的内容加到字符串b内容的末尾
        lr_output_message ("字符串b中为:%s",b);
    //lr_output_message ("b的地址为%d",n);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",atoi(&c));
        strcat(b,a);
        lr_output_message ("字符串b中为:%s",b);
        //lr_output_message ("b的地址为%d",n);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",k);
        strcat(b,"eleven");
        lr_output_message ("字符串b中为:%s",b);//字符串b中为:my name is shenyinghongeleven
        //lr_output_message ("b的地址为%d",n);
        lr_output_message ("字符串c中为:%s",c);
        //lr_output_message ("c的地址为%d",k);
        strncat(c," is my name",6);
        lr_output_message ("字符串c中为:%s",c);//字符串c中为:shenyinghong is my
        //lr_output_message ("c的地址为%d",k);
        return 0;
}

ycw 发表于 2012-4-10 16:24:10

LZ要是能分开举例就好了,

云层 发表于 2012-4-10 16:33:13

其实你要在LR中操作字符串不用那么复杂的,常用的无非就是
lr_save_var
lr_save_string
strcpy
strcat
sscanf
sprintf
atoi
itoa

msnshow 发表于 2012-4-10 22:45:47

就是函数的组合使用了

神樂 发表于 2012-4-11 11:26:58

回复 7# msnshow


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

神樂 发表于 2012-4-11 11:27:32

回复 6# 云层


    哦!好吧!不知道,所以都学习了下!
页: [1]
查看完整版本: 关于字符串的各种函数的操作