游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2435|回复: 7

请问指针问题?

[复制链接]

6

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-4-21 20:19:00 | 显示全部楼层 |阅读模式
下面是我程序中的一部分:(vc6环境)

char *Str=new char[8];
int n=0;
for(int k=0;k<8;k++)
{
      Str[n++]=m_FileData[k];      //一个文本文件的内容在m_FileData中
}
WritetoLog("%d,",strlen(Str));     //WritetoLog是一个输出到文本的函数
WritetoLog(Str);  

结果是:
   24,
  qwerwqr0??瓠韩????             //"qwerwqr0"才是真实的内容


好郁闷阿。怎么后面有乱码阿!
各位帮帮我!!!!!!!!

     

1

主题

8

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2004-4-21 21:05:00 | 显示全部楼层

Re: 请问指针问题?

由于不知道WritetoLog()的处理过程,不敢妄下定论。但根据现象来判断,极有可能是因为你的字符串没有以'\0'结尾。8字节的数组你存8个字符,那你的'\0'放在哪里?

建议先用ZeroMemory将你的char[8]初试化,然后将循环改为:
for(int k=0;k<7;k++)
{
      ...
}

我推测后面的乱码是随机长度的…… [em11]

15

主题

155

帖子

157

积分

注册会员

Rank: 2

积分
157
发表于 2004-4-21 22:08:00 | 显示全部楼层

Re:请问指针问题?

hamham说的极是
pp49是不是把字符‘0’当成‘\0’了?

10

主题

314

帖子

314

积分

中级会员

Rank: 3Rank: 3

积分
314
QQ
发表于 2004-4-21 22:24:00 | 显示全部楼层

Re:请问指针问题?

看C看的多了啊。我都看不懂VB了啊。呵呵。(路过)

7

主题

203

帖子

203

积分

中级会员

Rank: 3Rank: 3

积分
203
QQ
发表于 2004-4-22 01:03:00 | 显示全部楼层

Re: Re:请问指针问题?

慕神: Re:请问指针问题?

看C看的多了啊。我都看不懂VB了啊。呵呵。(路过)


上面的代码哪有VB的 [em21] [em21]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-4-22 08:17:00 | 显示全部楼层

Re:请问指针问题?

strlen()函数返回的是直到有0或者'\0'的字符出现的内容为止。
而你new出来的Str的地址在内存中是随机的,而且8个字符后没有0或者'\0',所以会一直数下去,直到内存中有一处是0为止。

解决方法你char *Str = new char[9];就好了。。。=)
然后最好在memset一下。

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
发表于 2004-4-22 14:28:00 | 显示全部楼层

Re:请问指针问题?

楼上的大哥还可以,我来实现:
char *Str=new char[9];
int n=0;

memset(Str,0,9);//这样也行1:Str[8]=0;
for(int k=0;k<8;k++)
{
      Str[n++]=m_FileData[k];      //一个文本文件的内容在m_FileData中
}
//这样也行2:Str[8]=0;

6

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2004-4-22 15:44:00 | 显示全部楼层

Re: 请问指针问题?

thinkAll!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-30 09:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表