51Testing软件测试论坛
标题:
关于字符串的各种函数的操作
[打印本页]
作者:
神樂
时间:
2012-4-10 15:33
标题:
关于字符串的各种函数的操作
Action()
{
char *a="welcome to dewei.";//char a[100]="welcome";
char b[32]="my name is.";
char c[32]="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
有些乱,看的头晕。
作者:
神樂
时间:
2012-4-10 15:46
本帖最后由 神樂 于 2012-4-10 15:48 编辑
回复
2#
云层
可以分成2个action
Action()
{
char *a="welcome to dewei.";//char a[100]="welcome";
char b[100]="my name is.";
char c[320]="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
回复
2#
云层
Action()
{
char *a="welcome to dewei.";//char a[100]="welcome";
char b[100]="my name is.";
char c[320]="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
LZ要是能分开举例就好了,
作者:
云层
时间:
2012-4-10 16:33
其实你要在LR中操作字符串不用那么复杂的,常用的无非就是
lr_save_var
lr_save_string
strcpy
strcat
sscanf
sprintf
atoi
itoa
作者:
msnshow
时间:
2012-4-10 22:45
就是函数的组合使用了
作者:
神樂
时间:
2012-4-11 11:26
回复
7#
msnshow
组合使用就会相互影响吗?发现如果只一个函数一个函数使用就不会出现这样的情况。
作者:
神樂
时间:
2012-4-11 11:27
回复
6#
云层
哦!好吧!不知道,所以都学习了下!
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2