游戏开发论坛

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

小菜鸟问个笨问题

[复制链接]

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
发表于 2005-3-25 16:13:00 | 显示全部楼层 |阅读模式
请问我的这段程序错在哪了?如何解决这个错误呢?或者有别的更好的方法实现。
目的:截取指定字符串的前len个字符
我的代码:
char data[]={"0123456789"};
int   len=4;
char *buf=new char[len];
strset(buf,0);//如果不要这一句不会提示错误,但是buf的内容会莫名的增加乱码
strncpy(buf,data,len);
cout<<buf<<endl;
delete(buf);//换成delete[] buf一样出错
buf=NULL;

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2005-3-25 19:47:00 | 显示全部楼层

Re:小菜鸟问个笨问题

设置数组维数要用 const 在int len=4; 前加个 const

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2005-3-25 20:39:00 | 显示全部楼层

Re:小菜鸟问个笨问题

测试了下 加const 也不行 好象是char *buf=new char[len];的问题 会不会没分配终止空字浮 真怪啊看上去都没错。。

20

主题

398

帖子

398

积分

中级会员

Rank: 3Rank: 3

积分
398
发表于 2005-3-25 21:45:00 | 显示全部楼层

Re:小菜鸟问个笨问题

看起来也没什么错误啊!把strset(buf,0);换成ZeroMemory(buf,len);试试!

2

主题

89

帖子

99

积分

注册会员

Rank: 2

积分
99
发表于 2005-3-25 21:59:00 | 显示全部楼层

Re:小菜鸟问个笨问题

strset(buf,0);中要求buf有结束符,没有的话可能出错

6

主题

52

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2005-3-25 22:23:00 | 显示全部楼层

Re:小菜鸟问个笨问题

太怪了

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2005-3-27 16:41:00 | 显示全部楼层

Re:小菜鸟问个笨问题

谢谢各位了,现在问题已经搞定了,只要把申请的空间大小len加1,然后用memset(buf,0,len-1)就可以了

6

主题

52

帖子

52

积分

注册会员

Rank: 2

积分
52
发表于 2005-3-27 20:48:00 | 显示全部楼层

Re:小菜鸟问个笨问题

呵呵,真的没想到用memset就解决了!
一直在想strset清零怎样让他不产生越界的那个警告 :目
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 01:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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