51Testing软件测试论坛
标题:
为什么在loadrunner中一个判断不起作用?
[打印本页]
作者:
gdutlzl
时间:
2012-5-17 10:43
标题:
为什么在loadrunner中一个判断不起作用?
我将一个字符串转化为整数类型的,但转化后判断却不起作用了,请高手指点,谢谢。
代码如下:我这个函数的目的是想把str1中的数字“52581”单独拿出来,各位高手如果有其他方法请指点?
int Slength=0;
int i,j,y;
char str2[5];
char *str1="\r\n \r\n 52581\r\n \r\n \r\n ";
Action()
{
Slength=strlen(str1);
j=0;
for (i=0;i<=Slength+1;i++) {
*(str2)=*(str1+i);
lr_save_string(str2,"New_OrderID");
y=itoa(lr_eval_string(str2));
lr_output_message("%d",y);
if (0<Y<=9) {
// lr_save_string("hello world","param");
// lr_output_message("This is:",lr_eval_string("{param}"));
lr_output_message("This is:",lr_eval_string("{New_OrderID}"));
}
}
return 0;
}
作者:
云层
时间:
2012-5-17 10:47
关联直接做到位,或者用strtok来做就简单了,别那么复杂
作者:
gdutlzl
时间:
2012-5-17 15:45
char *str1;
char * token;
char * tokeny;
char sepA[] = " ";
Action()
{
lr_save_string("\r\n \r\n 52581\r\n \r\n \r\n ","str");
token = (char *)strtok(lr_eval_string("{str}"), sepA);
while (token != NULL ) { // While valid tokens are returned
lr_output_message ("%s", token );
if (token=="") {
lr_output_message ("%d", i );
}
token = (char *)strtok(NULL, sepA); // Get the next token
}
return 0;
}
我这样修改后, 还是得不到想要的结果。运行的结果如下:
Action.c(20):
Action.c(20):
Action.c(20): 52581
Action.c(20):
Action.c(20):
虽然显示是没有值的,但实际是有“\r\n”的, 请指点一下。
还有,小弟对 token = (char *)strtok(NULL, sepB); 这一句不懂,这句怎么就可以循环了呢?
作者:
gdutlzl
时间:
2012-5-17 15:47
我的意思是说,虽然Action.c(20): 看起来是没有值的,但下面的判断不起作用。而且Action.c(20): 52581
其实也是带有“\r\n”的。
if (token!="") {
lr_output_message ("%d", i );
}
作者:
云层
时间:
2012-5-17 15:48
你到的空是\t制表符
作者:
gdutlzl
时间:
2012-5-17 16:00
if (token!="\t") {
lr_output_message ("%d", i );
}
我用这个判断,结果也不对。每一行都有打印出 i
Action.c(20):
Action.c(24): 0
Action.c(20):
Action.c(24): 0
Action.c(20): 52581
Action.c(24): 0
Action.c(20):
Action.c(24): 0
Action.c(20):
Action.c(24): 0
作者:
云层
时间:
2012-5-17 16:04
你敢不敢多放几个\t
作者:
gdutlzl
时间:
2012-5-17 16:07
我一个一个加,一直加到5个,可结果还是一样的
作者:
云层
时间:
2012-5-17 16:08
strtok貌似是按照一个字符来的。。。你多取几次吧。。算好次数就行了,要么你用另外一个自己写的函数,去找一下fin写的一个函数也可以做到
作者:
gdutlzl
时间:
2012-5-17 16:12
我还曾这样改过代码:
char *str1;
char * token;
char * tokeny;
char sepA[] = "\r\n";
char sepB[] = " ";
Action()
{
lr_save_string("\r\n \r\n 52581\r\n \r\n \r\n ","str");
token = (char *)strtok(lr_eval_string("{str}"), sepA);
while (token != NULL ) { // While valid tokens are returned
lr_output_message ("%s", token );
tokeny=(char *)strtok(token, sepB);
if (tokeny!=NULL) {
lr_output_message ("%s", tokeny );
}
token = (char *)strtok(NULL, sepA); // Get the next token
}
return 0;
}
可结果只运行了一次就结束了,lr_output_message ("%s", token )返回的结果是空,而且lr_output_message ("%s", tokeny ); 没有打印任何东东
作者:
gdutlzl
时间:
2012-5-17 16:30
求高手指点一下,急,谢谢!
作者:
gdutlzl
时间:
2012-5-23 15:53
求高手指点一下,急,谢谢!
作者:
TesterChen
时间:
2012-5-23 16:04
回复
12#
gdutlzl
学会调试,把你原始截取到的字符串打印出来。。。
每一个你觉得有怀疑的位置都可以打印出来,你会发现很多问题就明显了
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2