|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 关于使用malloc函数动态申请内存空间的问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
5622
人关注过本帖
标题:
关于使用malloc函数动态申请内存空间的问题
只看楼主
加入收藏
yangzexun24
等 级:
新手上路
帖 子:48
专家分:0
注 册:2010-12-15
第
11
楼
收藏
得分:0
回复 10楼 azzbcc
'\0'的问题我当然想过
问题是假设我申请的是4个内存空间 但实际有22个
至于为什么没有使用strncmp函数 这个我也试过不知道为什么不行
就像我用的strncpy函数 指定了只复制len1个 而函数会自动为str1[len1]初始化为'\0'
但是没有 是我后来手动初始化的
如果不添加这个'\0' 不但会显示出未初始化的元素 更重要的是根本就不能正确判断了
2013-04-01 15:52
举报帖子
使用道具
赠送鲜花
yangzexun24
等 级:
新手上路
帖 子:48
专家分:0
注 册:2010-12-15
第
12
楼
收藏
得分:0
回复 10楼 azzbcc
我原来是怎么编的我都忘了
这个是能成功运行的代码 之前的代码删了
应该是要为pc申请len+1个空间 不然没地方放'\0'
或者申请len个空间 用strncmp函数比较前len个字符
之前显示pc有22个字符内存空间的问题应该就是没有地方存放'\0'
导致使用%s格式输出的printf函数输出只到找到下一个内存中的'\0'为止停止输出
看来是大意了
2013-04-01 16:05
举报帖子
使用道具
赠送鲜花
yangzexun24
等 级:
新手上路
帖 子:48
专家分:0
注 册:2010-12-15
第
13
楼
收藏
得分:0
以下是引用
azzbcc
在2013-4-1 15:30:02的发言:
假设字符串长度为 3,申请 3个空间就够了么,‘\0’可没有算到字符串长度里面
既然楼主知道用 strncpy和strcmp,为什么不用 strncmp?
那在程序结束之前的情况下 应该在什么地方释放pc申请的内存空间
2013-04-01 16:08
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
14
楼
收藏
得分:0
以下是引用
yangzexun24
在2013-4-1 15:52:59的发言:
'\0'的问题我当然想过
问题是假设我申请的是4个内存空间 但实际有22个
至于为什么没有使用strncmp函数 这个我也试过不知道为什么不行
就像我用的strncpy函数 指定了只复制len1个 而函数会自动为str1[len1]初始化为'\0'
但是没有 是我后来手动初始化的
如果不添加这个'\0' 不但会显示出未初始化的元素 更重要的是根本就不能正确判断了
22个?
strcpy会复制 len个,也会自动初始化 str[len] = '\0',但他前提是 你提供了足够的空间,没有足够的空间,就不会初始化‘\0’
因为没有‘\0’,输出会沿地址向下检测,知道遇到‘\0’才停止输出,也许就是因为这个让你误以为申请了22个吧
[fly]存在即是合理[/fly]
2013-04-01 16:19
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
15
楼
收藏
得分:5
以下是引用
yangzexun24
在2013-4-1 16:08:43的发言:
那在程序结束之前的情况下 应该在什么地方释放pc申请的内存空间
如果用strncmp,还有必要申请空间么?
[fly]存在即是合理[/fly]
2013-04-01 16:20
举报帖子
使用道具
赠送鲜花
yangzexun24
等 级:
新手上路
帖 子:48
专家分:0
注 册:2010-12-15
第
16
楼
收藏
得分:0
以下是引用
azzbcc
在2013-4-1 16:20:43的发言:
如果用strncmp,还有必要申请空间么?
虽然可以用strncmp判断第二个字符串中是否包含第一个字符串
但是如果不为pc申请空间 那返回的是pc所指地址后的内容只到'\0'
然后就只能利用循环len1做判断条件 用putchar逐个输出字符
这样太麻烦了
2013-04-01 16:56
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
17
楼
收藏
得分:0
直接输出子串就是了
[fly]存在即是合理[/fly]
2013-04-01 17:16
举报帖子
使用道具
赠送鲜花
yangzexun24
等 级:
新手上路
帖 子:48
专家分:0
注 册:2010-12-15
第
18
楼
收藏
得分:0
以下是引用
azzbcc
在2013-4-1 17:16:17的发言:
直接输出子串就是了
怎么输出
2013-04-01 17:18
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
19
楼
收藏
得分:0
puts(str1)
[fly]存在即是合理[/fly]
2013-04-01 17:25
举报帖子
使用道具
赠送鲜花
yangzexun24
等 级:
新手上路
帖 子:48
专家分:0
注 册:2010-12-15
第
20
楼
收藏
得分:0
以下是引用
azzbcc
在2013-4-1 17:25:23的发言:
puts(str1)
题目要求的输出是 指向第二个字符串中出现第一个字符串位置的指针
不是当第二个字符串中出现第一个字符串时 输出第一个字符串啊。。。
2013-04-01 17:32
举报帖子
使用道具
赠送鲜花
22
2/3页
1
2
3
快速回复:
关于使用malloc函数动态申请内存空间的问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.078218 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved