注册 登录
编程论坛 C语言论坛

思考题,有兴趣的可以实现以下,包点评。

八画小子 发布于 2018-06-21 21:00, 2262 次点击
给大家留个思考题吧。用C实现一个数据结构,实现对字符串的操作。数据结构的定义自己思考,数据结构上的操作自己思考。
6 回复
#2
lin51616782018-06-22 00:48
数据结构显然无法实现对字符串的操作
需要配套的函数
感觉是想写一个 类似 std::string 的东西?
有很多现成的实现参考

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

而实现一个数据结构 好像没能很好的处理编码相关的问题
#3
九转星河2018-06-22 10:52
回复 2楼 lin5161678
我猜他的大意是用

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

这样处理吧~

当然也需要配套操作函数的~
#4
q183715281482018-06-22 11:06
哈哈大佬,还记的我吗?
我觉的可以这样弄
程序代码:
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来消除缓冲区
以下运行结果
只有本站会员才能查看附件,请 登录



#5
q183715281482018-06-22 11:10
想法如下
只有本站会员才能查看附件,请 登录

以上是我想,有什么错误,希望大佬指出
#6
八画小子2018-06-23 08:25
以下是引用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来消除缓冲区
以下运行结果
 
 
 

写代码不要这么将就哈。
#7
八画小子2018-06-23 08:26
以下是引用lin5161678在2018-6-22 00:48:11的发言:

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

编码转换的话,有兴趣也可以实现啊。应该不会有多难。
1