is_today
2016-08-19 03:35
采纳率: 83.3%
浏览 4.7k
已采纳

C语言中,char* 类型如何转换成 char[]类型

直接上码吧。
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 中。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • aimuHeart 2016-08-19 04:22
    已采纳

    用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);

    已采纳该答案
    打赏 评论
  • Mr.Stone^_^ 2016-08-19 03:58

    你把数组的首地址赋值给指针就可以了(这样只是把目标字符串所在地址给了指针,指针的指向发生了变化),你也可以用循环去挨个去赋值 。

    打赏 评论
  • 兰前小驻 2016-08-19 07:10

    bufheader = (char )malloc(sizeof(char) * BUFLENGTH );
    首先来分析这句代码,malloc是开辟空间,开辟了(sizeof(char) * BUFLENGTH )这么大
    把内存转为 (char )类型,也就是开来这样一块空间
    然后,bufheader这是个指针,存贮的是地址,也就相当于一个int类型。
    然后你把那么大的内存赋给了一个int类型?
    你试试这一句
    bufheader =&(char )malloc(sizeof(char) * BUFLENGTH );
    我不敢担保正确,我好久没看C语言了

    打赏 评论
  • dalinxiaozi 2021-07-09 20:10
    int main() {
        char a[100] = { "abc" }, * b;
        b = &a[0];
        cout << b;
    }
    
    abc
    
    打赏 评论

相关推荐 更多相似问题