内存读数出乱码怎么办

hjl0508 2014-04-24 04:19:25

//这是发送函数
bool sendnum(char* x,int len)
{
HANDLE hmap;
LPCTSTR hview;
hmap=CreateFileMapping(INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
0x4,
"sharenum");
if (hmap==NULL)
{
printf("创建内存映射失败\n");
return FALSE;
}
hview=(LPCTSTR)MapViewOfFile(hmap,FILE_MAP_ALL_ACCESS,0,0,0);
if (hview==NULL)
{
printf("获取内存地址失败\n");
}
memcpy((void *)hview,(void *)x,len);
UnmapViewOfFile(hview);
return true;
}
int main()
{
int n=23;
char ss[256];
sprintf(ss,"%d",n);
Sleep(10000);
while (1)
{
system("cls");
printf("sending...\n");
sendnum((char *)&(n),sizeof(n));
}

system("pause");
return 0;
}



//这是接收代码
HANDLE hmap;
LPCTSTR hview;
hmap=OpenFileMapping(FILE_MAP_READ,FALSE,"sharenum");
if (hmap==NULL)
{
printf("打开内存映射失败");
return NULL;
}
hview=(LPCTSTR)MapViewOfFile(hmap,FILE_MAP_READ,0,0,0);
if (hview==NULL)
{
printf("获取映射文件地址失败");
return NULL;
}


char x[256];
sprintf(x,hview);
int s=(int)&x;
printf("%d\n",s);
UnmapViewOfFile(hview);

当用
printf("%d\n",s);

结果是

当用

printf("%s\n",x);

结果是

当调试时发现hview的内存里存的是


大家看看这个该怎么搞,才能正确显示传入的数字呢?我各种试了都不成功。。。。
...全文
122 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mujiok2003 2014-04-26
  • 打赏
  • 举报
回复
你写的时候用23的二进制, 读的时候也要对应着来呗。
mujiok2003 2014-04-26
  • 打赏
  • 举报
回复
  char x[256];
    sprintf(x,hview);
    int s=(int)&x;
    printf("%d\n",s);
-->

    int s=*(int*)hview;
    printf("%d\n",s);
试试
hjl0508 2014-04-26
  • 打赏
  • 举报
回复
求助啊!有知道的么。。。。
hjl0508 2014-04-24
  • 打赏
  • 举报
回复
有知道的大神吗?

65,195

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧