标题:思考题,有兴趣的可以实现以下,包点评。
只看楼主
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
结帖率:96.55%
已结贴  问题点数:100 回复次数:6 
思考题,有兴趣的可以实现以下,包点评。
给大家留个思考题吧。用C实现一个数据结构,实现对字符串的操作。数据结构的定义自己思考,数据结构上的操作自己思考。
搜索更多相关主题的帖子: 思考 兴趣 数据结构 操作 定义 
2018-06-21 21:00
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
数据结构显然无法实现对字符串的操作
需要配套的函数
感觉是想写一个 类似 std::string 的东西?
有很多现成的实现参考

对字符串操作其实是小问题
单纯讨论操作 C的字符串操作函数基本能满足要求
字符串比较大的问题是各种编码 和 编码转换
深坑

而实现一个数据结构 好像没能很好的处理编码相关的问题

https://zh.
2018-06-22 00:48
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:100 
回复 2楼 lin5161678
我猜他的大意是用

struct lord
{
    size_t len;
    char s[1];
};

这样处理吧~

当然也需要配套操作函数的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-06-22 10:52
q18371528148
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-6-21
得分:0 
哈哈大佬,还记的我吗?
我觉的可以这样弄
程序代码:
struct stud *creat(void)
{
    struct stud *head,*p1,*p2;
    char a;  //用来消除%s的缓冲区
    n=0;
    p2=p1=(struct stud*)malloc(LEN);
    printf("输入:");
    scanf("%ld%s%c%c%d",&p1->num,p1->name,&a,&p1->sex,&p1->old);
    head=NULL;
    while(p1->num!=0)
    {
        n=n+1;
        if(n==1)
            head=p1;
        else 
            p2->next=p1;
        p2=p1;
        p1=(struct stud*)malloc(LEN);
        printf("Input:");
        scanf("%ld%s%c%c%d",&p1->num,p1->name,&a,&p1->sex,&p1->old);
    }
    p2->next=NULL;
    free(p1);
    

这里主要是利用char a来消除缓冲区
以下运行结果



2018-06-22 11:06
q18371528148
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-6-21
得分:0 
想法如下

以上是我想,有什么错误,希望大佬指出
2018-06-22 11:10
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
以下是引用q18371528148在2018-6-22 11:06:49的发言:

哈哈大佬,还记的我吗?
我觉的可以这样弄
struct stud *creat(void)
{
    struct stud *head,*p1,*p2;
    char a;  //用来消除%s的缓冲区
    n=0;
    p2=p1=(struct stud*)malloc(LEN);
    printf("输入:");
    scanf("%ld%s%c%c%d",&p1->num,p1->name,&a,&p1->sex,&p1->old);
    head=NULL;
    while(p1->num!=0)
    {
        n=n+1;
        if(n==1)
            head=p1;
        else  
            p2->next=p1;
        p2=p1;
        p1=(struct stud*)malloc(LEN);
        printf("Input:");
        scanf("%ld%s%c%c%d",&p1->num,p1->name,&a,&p1->sex,&p1->old);
    }
    p2->next=NULL;
    free(p1);
     
这里主要是利用char a来消除缓冲区
以下运行结果
 
 
 

写代码不要这么将就哈。
2018-06-23 08:25
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
以下是引用lin5161678在2018-6-22 00:48:11的发言:

数据结构显然无法实现对字符串的操作
需要配套的函数
感觉是想写一个 类似 std::string 的东西?
有很多现成的实现参考
 
对字符串操作其实是小问题
单纯讨论操作 C的字符串操作函数基本能满足要求
字符串比较大的问题是各种编码 和 编码转换
深坑
 
而实现一个数据结构 好像没能很好的处理编码相关的问题

编码转换的话,有兴趣也可以实现啊。应该不会有多难。
2018-06-23 08:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-488069-1-1.html




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

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