社区
C语言
帖子详情
C 怎么存储未知长度字符串?
三杨
2012-04-11 04:34:34
我讨厌C语言的灵活,但是不可否认这正是它的魅力所在;好吧问题来了,很简单的问题:
怎样存储未知长度的字符串,未知长度就是表示有可能无限大,以超大的数组下标这种不靠谱,说白了没从根本上解决问题;链表的方式应该可以,但是小弟不才,数据结构学得不好,求大虾给点代码片断,感激不尽,分亦送上。
...全文
1036
13
打赏
收藏
C 怎么存储未知长度字符串?
我讨厌C语言的灵活,但是不可否认这正是它的魅力所在;好吧问题来了,很简单的问题: 怎样存储未知长度的字符串,未知长度就是表示有可能无限大,以超大的数组下标这种不靠谱,说白了没从根本上解决问题;链表的方式应该可以,但是小弟不才,数据结构学得不好,求大虾给点代码片断,感激不尽,分亦送上。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
SuperLy
2012-04-11
打赏
举报
回复
既然用scanf,
那么,要么提前申请一个比较大的空间,
要么先让用户输入字符长度上限。
nice_cxf
2012-04-11
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
struct
{
char *context;
char *nxt;
char *pre;
}
这样更好,每一个节点都可以指定需要的大小。需要用多大就malloc多大。操作又灵活,又可根据自己需要选择大小。
[/Quote]
你这种需求的话用这个好点
不过最好要加上长度:
struct
{
char *context;
int len;
char *nxt;
char *pre;
}
千树之影
2012-04-11
打赏
举报
回复
既然不知道输入多长就用getchar一个一个读。还可以用一个char[20]缓冲一下。
千树之影
2012-04-11
打赏
举报
回复
GetChar(A* head,int n)
{
//找head为头的链表,第n/20个节点找第n%20个字符
}
InsertChar(A* head, int n, char c)
{
//如果n<链表长度*20直接插入,否则链表加个节点。
}
三杨
2012-04-11
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:
引用 3 楼 的回复:
1楼太浪费了。
struct
{
char data[20];
char *nxt;
char *pre;
}
省很多内存。20可以改。
可是要怎么用呢,理解我倒是可以理解。。
使用第N个元素就去第N/20个节点找第N%20个字符就行了
[/Quote]
如果我要scanf一个字符串,我也不知道用户要输入多少字符,我要怎么先把它存起来呢?存哪呢?如果就用这种结构体。
千树之影
2012-04-11
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
引用 3 楼 的回复:
1楼太浪费了。
struct
{
char data[20];
char *nxt;
char *pre;
}
省很多内存。20可以改。
可是要怎么用呢,理解我倒是可以理解。。
[/Quote]
使用第N个元素就去第N/20个节点找第N%20个字符就行了
三杨
2012-04-11
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
1楼太浪费了。
struct
{
char data[20];
char *nxt;
char *pre;
}
省很多内存。20可以改。
[/Quote]
可是要怎么用呢,理解我倒是可以理解。。
yuhao113
2012-04-11
打赏
举报
回复
struct
{
char *context;
char *nxt;
char *pre;
}
这样更好,每一个节点都可以指定需要的大小。需要用多大就malloc多大。操作又灵活,又可根据自己需要选择大小。
三杨
2012-04-11
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
很大到底有多大?
一般来说malloc来动态分配超大数组就可以了
没必要用链表,浪费空间
[/Quote]
其实要怪就怪我有钻牛角尖,话说真是遇到这种情况的话我完全可以用C++的动态数组;
可是我就是想用C解决这个问题,不考虑实际情况。
我自己才疏学浅,所以请大家多指教。
nice_cxf
2012-04-11
打赏
举报
回复
很大到底有多大?
一般来说malloc来动态分配超大数组就可以了
没必要用链表,浪费空间
千树之影
2012-04-11
打赏
举报
回复
1楼太浪费了。
struct
{
char data[20];
char *nxt;
char *pre;
}
省很多内存。20可以改。
三杨
2012-04-11
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
struct
{
char data; //当前元素
char *nxt; //指向下一元素
char *pre; //指向上一元素
}
[/Quote]
还真是简洁呢,不知道我注释的对不对呢。
可是怎么用呢?
vanxeger
2012-04-11
打赏
举报
回复
struct
{
char data;
char *nxt;
char *pre;
}
判断2个
字符串
是否含有相同的字符
如果要用一个和
字符串
a一样长的数组counter来计录a中各起点对应与b最大重合子
字符串
,这个数组也要和a一样长,空间上也不合适,除非情形很特殊,a短b长,不然不如直接malloc()一个堆空间来储存当前最长“子
字符串
”...
leetcode 151. 翻转
字符串
里的单词
给定一个
字符串
,逐个翻转
字符串
中的每个单词。 示例 1: 输入: “the sky is blue” 输出: “blue is sky the” 示例 2: 输入: ” hello world! “ 输出: “world! hello” 解释: 输入
字符串
可以在前面或者后面...
Python 47个
字符串
方法
# Python 47个
字符串
方法## 课程介绍同学们是否总是要搜资料、查官网后,才知道怎么操作
字符串
?如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、...
你必须知道的495个C语言问题
6.19 我怎样编写接受编译时宽度
未知
的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当数组是函数的参数时,为什么sizeof不能正确报告数组的大小? 6.22 如何在一...
C语言输入
未知
长度
字符数组
C语言输入
未知
长度
字符数组 问题描述:在最基础的C语言中使用scanf()函数简单输入一行长串字符数组,以回车结束。储存每一个字符以参与后面的运算,或者将他们打印下来。 细节问题 回车(enter)结束——指的是以...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章