51Testing软件测试论坛

标题: 大家帮我看看到底是什么问原因造成的 [打印本页]

作者: mai_ki1    时间: 2010-4-25 19:16
标题: 大家帮我看看到底是什么问原因造成的
大家好!本人菜鸟一只,目前正在学习LR  C Vuser脚本编写。今天照着书上输入以下代码:

#define USERCOUNT 100
Action()
{   char *namecommon="people";
    char *passwordcommon="people";
    char *filename="C:\\marks.txt";
    long file=NULL;
    int i=0;
    char username[20];
    char password[20];
   
    if(file=fopen(filename,"wt+")==NULL)
       {lr_output_message("Uable to create %s",filename);
        return -1;
       }
    for(i=0;i<USERCOUNT;i++)
   {
    sprintf(username,"%s%d",namecommon,i);
    sprintf(password,"%s%d",passwordcommon,i);
    strcat(username," ");
    strcat(username,password);
    strcat(username,"\r\n");
    fwrite(username,strlen(username),1,file);
   
   }
   fclose(file);
return 0;


}

编译未产生问题,但是在运行时出现以下错误提示:

Starting action Action.
Action.c(22): Error: C interpreter run time error: Action.c (22):  Error -- memory violation : Exception ACCESS_VIOLATION received.
Action.c(22): Notify: CCI trace: Action.c(22): fwrite(0x00ca0020 "people0 people0\r\n", 17, 1, 0)
.
Action.c(22): Notify: CCI trace: Compiled_code(0): Action()
.
Ending Vuser...

使用断点调试一下,发现是运行完fwrite(username,strlen(username),1,file);就提示错误了。。。

我对比了一下书上写的,已经是一摸一样的了,但是就是出错。麻烦各位高手帮我看看是什么原因。
还有就是我在脚本里输入“\”符号总是会变成“¥”,不知道这个是什么原因呢?哪里可以改呢?

[ 本帖最后由 mai_ki1 于 2010-4-25 19:43 编辑 ]
作者: mai_ki1    时间: 2010-4-25 21:01
哈哈,找到问题的原因了


        if(file=fopen(filename,"w+")==NULL)
    {
  lr_output_message("Uable to create %s",filename);
        return -1;
    }




改成
    file=fopen(filename,"w+");
    if(file==NULL)
    {
  lr_output_message("Uable to create %s",filename);
        return -1;
    }


就OK了!
作者: zhoward    时间: 2010-4-29 16:07
我是菜鸟, 但都知道你错在什么地方
        if(file=fopen(filename,"w+")==NULL)
需要改成        if((file=fopen(filename,"w+"))==NULL)
作者: aman_cao    时间: 2010-4-30 14:37
if((file=fopen(filename,"wt+"))==NULL)
=是赋值操作




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2