| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 579 人关注过本帖
标题:思考题,有兴趣的可以实现以下,包点评。
只看楼主 加入收藏
八画小子
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:16
帖 子:508
专家分:1228
注 册:2010-11-11
结帖率:96.3%
  已结贴   问题点数:100  回复次数:6   
思考题,有兴趣的可以实现以下,包点评。
给大家留个思考题吧。用C实现一个数据结构,实现对字符串的操作。数据结构的定义自己思考,数据结构上的操作自己思考。
2018-06-21 21:00
lin5161678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:14
帖 子:504
专家分:1803
注 册:2011-12-3
  得分:0 
数据结构显然无法实现对字符串的操作
需要配套的函数
感觉是想写一个 类似 std::string 的东西?
有很多现成的实现参考

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

而实现一个数据结构 好像没能很好的处理编码相关的问题
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: 9Rank: 9Rank: 9
等 级:贵宾
威 望:16
帖 子:508
专家分:1228
注 册: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: 9Rank: 9Rank: 9
等 级:贵宾
威 望:16
帖 子:508
专家分:1228
注 册:2010-11-11
  得分:0 
以下是引用lin5161678在2018-6-22 00:48:11的发言:

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

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







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

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