C解释器运行时错误:收到内存访问冲突

C解释器运行时错误:收到内存访问冲突,c,loadrunner,c-string,C,Loadrunner,C String,下面代码中的strcpy行抛出此错误: C interpreter runtime error: Memory access violation received. 如何修复此错误 int i = 1, len; char msg[2000]; //I have 2 strings which I need to send one by one sequentially char *txt1 = "I am first text"; char *txt2 = "I am second tex

下面代码中的
strcpy
行抛出此错误:

C interpreter runtime error: Memory access violation received.
如何修复此错误

int i = 1, len;
char msg[2000];

//I have 2 strings which I need to send one by one sequentially
char *txt1 = "I am first text";
char *txt2 = "I am second text";

for (i = 1: i < 3; i++)
{
    strcpy(msg, txt[i]);
    lr_output_message(msg);
    len = strlen(msg);
}
inti=1,len;
char-msg[2000];
//我有2个字符串,我需要发送一个接一个顺序
char*txt1=“我是第一个文本”;
char*txt2=“我是第二个文本”;
对于(i=1:i<3;i++)
{
strcpy(msg,txt[i]);
lr_输出_消息(msg);
len=strlen(msg);
}

由于很多原因,这不可能是您的代码,因为它永远不会编译

  • 任何地方都没有
    txt
    数组
  • for
    循环语法错误
  • 这仅仅是两个,但是对于这么小的代码来说,它们太多了

    可以问的另一个问题是

    • 什么是C解释器
    但代码中最重要的是

    • 没有充分的理由复制字符串
    您只需使用原始指针并将它们传递给
    lr\u output\u message()
    函数,还需要注意的是,您不需要字符串的长度,因为
    lr\u output\u message()
    可能需要一个定义为非空字节序列后跟空字节的字符串。请记住,复制字符串是一项昂贵的操作,如果可以避免,就应该这样做

    访问冲突可能有很多原因,您正在读取只有两个元素的数组中的第三个元素。您正在将一个很长的字符串复制到一个没有足够空间的数组中

    但是从发布的代码中不可能知道哪一个是真正的问题,因为您发布的代码甚至不会编译


    此外,为目标字符串分配一个“可能”足够大的任意大小的数组是一种不好的做法。您应该对数组的大小有一个明确的限制,或者在运行时进行计算。它实际上取决于许多因素,但一般来说,您应该知道字符串保证适合数组,或者在运行时检查。

    什么是
    txt
    ?(i=1:imaybe
    char*txt[]={“我是第一个文本”、“我是第二个文本”}
    和(i=0:i@LP你是说
    i<3
    我想。请你解释一下什么是“C解释器”?@LP我想我没听懂你的意思。我的意思是
    char*txt[]={“我是第一个文本”,“我是第二个文本”}
    i<2
    配合使用,但与
    i<3
    配合使用则是UB。