cloudfj 发表于 2008-5-23 15:19:08

帮我看下这段代码那里错了。。

int ls;
char *SN;
int i;
Action()
{
lr_load_dll("key.dll");
while(i<10)
{
char *key = (char*)malloc(33);
memset(key, 0, 33);
matkey_gen(key);
ls = key_valid(key);
lr_error_message("key = %s",key);
lr_error_message("i=%d",i);
SN = key;
      i=i+1;
lr_save_string(SN,"host-key");
break;
    }
lr_error_message("host-key = %s",lr_eval_string("{host-key}"));
    return 0;
}


主要就是buffer怎么向字符串转换!
我是想先用dll生成的buffer存到数组中备用,然后把数组中的值取出来存到参数。后面在把参数发送给服务器。
现在是把数组中的值取出来存到参数host-key的时候报的错误。错误代码是:Error: C interpreter run time error: Action.c (17):Error -- memory violation : Exception ACCESS_VIOLATION received.


谢谢大家帮我看看。。互相交流下!

iori 发表于 2008-5-23 16:07:21

*SN = key;
      i=i+1;
lr_save_string(*SN,"host-key");
这样呢,用strcpy也可以

[ 本帖最后由 iori 于 2008-5-23 16:18 编辑 ]

cloudfj 发表于 2008-5-23 16:23:36

这个问题基本解决了!主要是SN的值在出了循环以后就没有了!所以复制的时候错误了!
现在改成。int ls;
char *SN;
int i = 0;
Action()
{
      char *key = 0;
      lr_load_dll("key.dll");

                if(i < 4)
                {
                        SN = (char*)malloc(33);
                        memset(SN, 0, 33);
                        matkey_gen(SN);
                        ls = key_valid(SN);
                        lr_error_message("key = %s",SN);
                        lr_error_message("i=%d",i);
                        lr_save_string(SN,"host-key");
                        i=i+1;
                }
                else
                {
                        lr_error_message("i=%d",i);
                        lr_save_string(SN,"host-key");
                        i=i+1;
                }

      lr_error_message("key1 = %s",lr_eval_string("{host-key}"));
      return 0;
}

cloudfj 发表于 2008-5-23 16:23:44

我最初衷的意思是先从DLL里取到值。然后把值存到数组中,以后向服务器发送值都从数组中取。
这个原因是DLL每次生成的值都是唯一的,这样向服务器发送的值都是唯一,数据库只会做插入的操作。
我想把值存到数组中就是想在前面DLL生成的若干值存到数组中,在一定次数以后的值就不用DLL生成,可以直接从数组中取出。
页: [1]
查看完整版本: 帮我看下这段代码那里错了。。