求教大师,hook send后怎样格式化buf

Andrewdavid 2016-08-20 10:25:31
int WINAPI My_send(SOCKET s, const char FAR* buf, int len, int flags)
{ int length;
CString show;
GetsendHook.UnHook();
for(int i=0; i<len; i++)
{show=buf[i]);
}
ofstream ofresult( "E:\\result.txt ",ios::app);
ofresult<<show<<endl;
length=send(s,buf,len,flags);
GetsendHook.ReHook();
return length;}

但result.txt里的内容都是:
784FD990
784FD990
784FD990
784FD990
784FD990
00A69A40
00A69A40
00A69A40
00A69A40
00A69A40
实际上用OD看的应该是:
INSERT INTO br_zdxx(cd1_bh,cd1_mc,xh,bh,rxm,zh,sj,xm,lx) VALUES ( 'B24 01', 'VICO', '01', '017000025615', 'LZ', '201607006208', '2015-1-1 20:18:59.496', 'SB', 'XY' )
我想把VALUES后面括号里的9个值依次赋给九个变量:char cd1_bh[10], cd1_mc[150], xh[2], bh[30], rxm[50], zh[20], xm[50], lx[10];
在书上和网上都找不到答案,求大师帮忙!
...全文
148 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2016-08-22
  • 打赏
  • 举报
回复
你这写入的都是指针地址等,而不是指针指向的内容
赵4老师 2016-08-22
  • 打赏
  • 举报
回复
int WINAPI My_send(SOCKET s, const char FAR* buf, int len, int flags)
{
    int length;
    FILE *f;

    f=fopen("E:\\result.bin","ab");
    fwrite((const void *)buf,1,(size_t)len,f);
    fclose(f);
    GetsendHook.UnHook();
    length=send(s,buf,len,flags);
    GetsendHook.ReHook();
    return length;
}
Andrewdavid 2016-08-20
  • 打赏
  • 举报
回复
引用 5 楼 CharlesSimonyi 的回复:
show=buf[i];是不行的,一个元素无法赋值到一个数组, show[i]=buf[i];才对
show[i]=buf[i];在上面试过啊,还是十六进制的内存地址
encoderlee 2016-08-20
  • 打赏
  • 举报
回复
show=buf[i];是不行的,一个元素无法赋值到一个数组, show[i]=buf[i];才对
Andrewdavid 2016-08-20
  • 打赏
  • 举报
回复
引用 3 楼 CharlesSimonyi 的回复:
定义char数组要指定长度,比如char show[100];
char show[1000]; for(int i=0; i<len; i++) {show[i]=buf[i];} 还是不行 show=buf[i];无法从 const char 转换为 char 【1000】
encoderlee 2016-08-20
  • 打赏
  • 举报
回复
定义char数组要指定长度,比如char show[100];
Andrewdavid 2016-08-20
  • 打赏
  • 举报
回复
引用 1 楼 CharlesSimonyi 的回复:
问题一: CString show; for(int i=0; i<len; i++) {show=buf[i]); show的初始长度为0,不能通过数组下标直接写入字符。 不建议使用CString,这里使用char数组最方便
老师,用CString确实都是16进制,但我改成char show[]; 编译通不过,具体怎么做还请老师指点! 多谢!!
encoderlee 2016-08-20
  • 打赏
  • 举报
回复
问题一:
CString show;
for(int i=0; i<len; i++)
{show=buf[i]);
show的初始长度为0,不能通过数组下标直接写入字符。

问题二:
ofresult<<show<<endl;
应改成ofresult<<(LPCTSTR)show<<endl;
还要注意工程的字符集问题。

不建议使用CString,这里使用char数组最方便

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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