首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

memcpy()函数不能拷贝有关问题

2012-02-25 
memcpy()函数不能拷贝问题程序是想将program这7个字符转换成56bit,56bit放在int oubit[56]中,然后用mencpy

memcpy()函数不能拷贝问题
程序是想将program这7个字符转换成56bit,56bit放在int oubit[56]中,然后用mencpy()函数,将int oubit[56]拷贝到int out[56],拷贝的时候出现问题.请问是什么原因啊???


#include <string>
#include <cmath>
#include <stdio.h>
#include <iostream>
using namespace std;
 
main()
{
  char inch[7]={'p','r','o','g','r','a','m'};
  int outbit[56]={0};
  int out[56]={0};
  int cnt1,cnt2,pos;
  for(cnt1=0;cnt1<7;cnt1++) //将program这7个字符转换成56bit,56bit放在outbit56
  {
pos=int(inch[cnt1]);
pos=pos<0 ? pos+256 : pos; //负数取补码
printf("\n%d\n",pos); //输出每个字符的ASCII码
for(cnt2=7;cnt2>=0;cnt2--)
{
outbit[cnt1*8+cnt2]=(pos%2!=0) ? 1:0;
pos/=2;
}
  }
  memcpy(out,outbit,56); //把outbit[56]拷贝给out[56]

  printf("\noutbit is\n"); //输出outbit[56]
  for(int n=0;n<56;n++)
printf("%d",outbit[n]);

  printf("\nout is\n"); //输出out[56]
  for(int m=0;m<56;m++)
printf("%d",out[m]);
}

运行结果如下:

112
114
111
103
114
97
109
outbit is
01110000011100100110111101100111011100100110000101101101
out is
01110000011100000000000000000000000000000000000000000000
Press any key to continue

[解决办法]
长度没控制好

memcpy(out, outbit, sizeof(int)*56);
[解决办法]
memcpy(dest,src,bytesize)
[解决办法]
一个int又不是一个byte直接放56..
sizeof(int)*56

热点排行