jessy_f
驱动牛犊
驱动牛犊
  • 注册日期2004-12-01
  • 最后登录2005-09-22
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4586回复:10

关于char *长度的问题

楼主#
更多 发布于:2004-12-18 21:57
char *HeaderBuffer;
char *strtmp;       //文件的名字,不包含路径
char *filename;     //包含了路径的文件的名字
HeaderBuffer = (char*)malloc(64);
strtmp = (char*)malloc(8);
filename = (char*)malloc(24);
for(int k=0; k<8; k++)
{
    *(strtmp+k) = *(HeaderBuffer+4+k);
}
strcpy(filename,"c:\\output\\");
strcat(filename,strtmp);

本来我的意图是把headerbuffer里面从第四字节开始的数据拷贝到strtmp中间,然后加上路径之后拷贝到filename上
但是为什么这几句过后,strtmp和filename莫名其妙的在最后多出了一些字节,而且是乱码,使用CreateFile这个函数也不能创建filename这个文件了
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-12-18 23:29
for(int k=0; k<8; k++)
{
*(strtmp+k) = *(HeaderBuffer+4+k);
}
strtmp[8] = '\\0';
strcpy(filename,"c:\\output\\");
strcat(filename,strtmp);

terminated with NULL


[编辑 -  12/18/04 by  arthurtu]
Gong_XG
驱动太牛
驱动太牛
  • 注册日期2002-10-01
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分313分
  • 威望46点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-19 00:49
会单步调试吗?!
denglide
驱动牛犊
驱动牛犊
  • 注册日期2003-12-06
  • 最后登录2021-01-08
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-12-19 14:14
字符串的结束符及位置对不对?
gjltce
驱动小牛
驱动小牛
  • 注册日期2003-07-05
  • 最后登录2011-12-10
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望59点
  • 贡献值0点
  • 好评度25点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-27 09:03
用C++中的 string 类型,很方便。
windchen
驱动牛犊
驱动牛犊
  • 注册日期2004-08-11
  • 最后登录2010-01-14
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-27 12:22
free(buffer),试试看了.还有把char*     ={NULL}
hhyyss1220
驱动牛犊
驱动牛犊
  • 注册日期2004-12-29
  • 最后登录2006-04-08
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-29 09:45
strtmp,filename没有结束符.
sunmoon2k
驱动牛犊
驱动牛犊
  • 注册日期2004-12-29
  • 最后登录2005-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-30 11:25
strtmp = (char*)malloc(9);
strtmp[8] = 0;

还有HeaderBuffer 没有初始化,里面当然是乱码的。

[编辑 -  12/30/04 by  sunmoon2k]
minardi
驱动牛犊
驱动牛犊
  • 注册日期2004-09-24
  • 最后登录2005-02-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-02-22 13:10
都应该初始化
walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-01 10:03
初始化分配的空间就可以了
MEMSET
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
wince_123
驱动牛犊
驱动牛犊
  • 注册日期2005-03-22
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-22 23:15
反斜杠必须用两个!!!\"C:\\\\outpt\\\\\"
游客

返回顶部