直接上码吧。
typedef unsigned char BYTE;
char* bufheader;
bufheader = (char )malloc(sizeof(char) * BUFLENGTH );
FILE readheader = fopen(filename, "rb");
fread(bufheader, 1, BUFLENGTH, readheader);
BYTE m_byData[MAX];
我想实现:m_byData = bufheader;
但是不行,(注:MAX > BUFLENGTH)
想问下该怎样才能实现 “m_byData = bufheader”,就是把 bufheader 中的二进制数据放到 m_byData 中。
用memcpy,或者
typedef unsigned char BYTE;
char* bufheader;
//bufheader = (char )malloc(sizeof(char) * BUFLENGTH );
BYTE m_byData[MAX];
bufheader =m_byData;
FILE readheader = fopen(filename, "rb");
fread(bufheader, 1, BUFLENGTH, readheader);
你把数组的首地址赋值给指针就可以了(这样只是把目标字符串所在地址给了指针,指针的指向发生了变化),你也可以用循环去挨个去赋值 。
bufheader = (char )malloc(sizeof(char) * BUFLENGTH );
首先来分析这句代码,malloc是开辟空间,开辟了(sizeof(char) * BUFLENGTH )这么大
把内存转为 (char )类型,也就是开来这样一块空间
然后,bufheader这是个指针,存贮的是地址,也就相当于一个int类型。
然后你把那么大的内存赋给了一个int类型?
你试试这一句
bufheader =&(char )malloc(sizeof(char) * BUFLENGTH );
我不敢担保正确,我好久没看C语言了
int main() {
char a[100] = { "abc" }, * b;
b = &a[0];
cout << b;
}
abc