我有2个结构。
typedef struct A {
INT Len;
VOID *Buffer;
} A;
typedef struct B {
INT MyVar;
INT Length;
CHAR Message[100];
} B;
结构A在某处填充,我想将* Buffer的内容复制到Message [100](在结构B中)。
我正在尝试这样做:
memcpy(B.Message, A.Buffer, A.Len);
我正在使用Visual C ++编译器,它说:
当前位置没有可用的源代码。
然后:
访问冲突读取位置0x00000000。
有人可以帮我这个吗?
答案 0 :(得分:2)
确保您复制的A
确实有效。它看起来好像是一个NULL指针。
答案 1 :(得分:1)
此段代码会回答您的问题( 经过编辑以符合您评论中的描述 ):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct A {
int Len;
void *Buffer;
} A;
typedef struct B {
int MyVar;
int Length;
char Message[100];
} B;
void mycopy(A source)
{
printf("Content: %s\n", (char*)source.Buffer);
B test;
memcpy(test.Message, source.Buffer, strlen(source.Buffer)*sizeof(char));
printf("Message is: \"%s\"!\n", test.Message);
}
int main(void)
{
A mymessage;
mymessage.Buffer = malloc(40*sizeof(char));
strcpy(mymessage.Buffer,"Hello world");
mycopy(mymessage);
return 0;
}
在你发布的memcpy代码中,你已经使用了结构的定义(B
和A
),尽管你必须创建一个结构的实例变量来开始。
你应该在memcpy之前发布你所做的事情,因为根据你所写的,我们假设你没有实现这两个结构,就像我在这里所做的那样:
A mymessage;
B test;