| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 990 人关注过本帖
标题:怎样用一维来保存二维形式的字符串?考虑的是内存,但只用这种形式?
只看楼主 加入收藏
20072815
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2007-12-1
收藏
 问题点数:0 回复次数:8 
怎样用一维来保存二维形式的字符串?考虑的是内存,但只用这种形式?
20
ShiZiXin
56589
Sunshow
45095
askformore
39951
sky110
36766
soff
34616
Reinhardt
33536
Walkerun
26551
hx0087
25953
BulkWaWa
25673
gemini0618
25366
billrice
25089
HuangXiuZhen
25027
Arson
24820
bjtwl
23466
zzloveff
22422
YiGeRenSanBu
21882
ff1024
21576
damu
21470
YingWuZhe
21329
LuciferQ
21231
若将类似这种形式,其字符串的数目总共加起来可能上百万,用一维数组来保存,其中那个结束字符该怎样放在这个一维数组里?望明示!

[[it] 本帖最后由 20072815 于 2008-3-22 22:53 编辑 [/it]]
搜索更多相关主题的帖子: 内存 字符 形式 保存 Arson 
2008-03-22 22:52
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
你的字符内容我看只有字母和数字,你可以找个ASCII码不在其中的字符做分隔符,取字符的时候遇到分隔符就换成“/0”

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-03-22 23:00
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
你的字符串是存在txt文件中吗?如果是,那么就好处理了,遇到'\n'时,就用一个特殊符号标记一下(最好在字符串结尾后先加个'\0',然后再加特殊标记符号),这表示一行字符串到尾了。不过这样的坏处是不好搜索定位。另一种方法是,找出所有字符串中最长的那一串,测出其长度,然后把每个字符串的存储长度定为最长长度(或最长长度加1(用来放‘\0’))!这种方法的坏处是浪费空间太多。还有一种方法是用链表,这是一种比较好的方法(这种方法要求对指针的操作很熟悉,否则很容易出错)!

[[it] 本帖最后由 蓝色神话 于 2008-3-23 10:24 编辑 [/it]]
2008-03-23 10:21
与谁争疯
Rank: 1
来 自:疯子国酋长
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-3-18
收藏
得分:0 
没有好办法,只有放在文件里一行一行读
2008-03-23 10:26
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
链表并不节约空间只是怕连续内存不太够。我的建议是用指针数组

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-23 11:20
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
[bo]以下是引用 [un]qfyzy[/un] 在 2008-3-23 11:20 的发言:[/bo]

链表并不节约空间只是怕连续内存不太够。我的建议是用指针数组

可以开辟动态内存,这样使用链表后既可以节约内存又可以搜索定位!
2008-03-23 14:50
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
回复 6# 的帖子
链表首先并不节约内存。在每个节点里有一个指针,还要考虑对齐的问题。
举个例子。把123456789所有的组合形式用链表的形式放入内存。一个节点只放一个,你可以看看效果。
至于search更是麻烦。必须一个一个找。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-03-23 17:59
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
可以这样做:
一维数组 a:
a s d \0 w e r \0 s f d h \0...
然后用一个指针数组,使每个指针指向每个字符串的首字母(地址)
a s d \0 w e r \0 s f d h \0 ...
p1       p2      p3          p3 ...

(感叹一下,好久没来bc-cn了!)

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-03-23 18:23
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
[bo]以下是引用 [un]qfyzy[/un] 在 2008-3-23 17:59 的发言:[/bo]

链表首先并不节约内存。在每个节点里有一个指针,还要考虑对齐的问题。
举个例子。把123456789所有的组合形式用链表的形式放入内存。一个节点只放一个,你可以看看效果。
至于search更是麻烦。必须一个一个找。 ...

真不知你是怎么学程序的,谁说是按你那样存的,晕死!难道链表中就不能声明个字符串指针,然后动态的开辟一个字符数组用来存字符串。你用过链表没啊?
2008-03-23 19:01
快速回复:怎样用一维来保存二维形式的字符串?考虑的是内存,但只用这种形式?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024628 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved