| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3790 人关注过本帖
标题:数据结构串的问题,在输入的指定位置前插入字符串
取消只看楼主 加入收藏
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
结帖率:95.37%
收藏
已结贴  问题点数:20 回复次数:6 
数据结构串的问题,在输入的指定位置前插入字符串
#include<stdio.h>
#define max 8

typedef struct
{
    char ch[max];
    int last;
}string;

void InintString(string *s,int Max)
{
    for(int i=0;i<Max;i++)
        s->ch[i]='\0';
    s->last=0;
}

void CreateString(string *s,char a[],int n)
{
    int i=0;
    for(;i<n;i++)
    {
        s->ch[i]=a[i];
    }
    s->ch[i+1]='\0';
    s->last=n;
    printf("你输入的字符串为:\n");
    printf("%s",s->ch);
    printf("\n");
}

void StrInsert(string *s,char b[],int n,int pos)
{
    int i;
    if(pos<0||pos>s->last)
    {
        printf("输入的位置不合理!\n");
        return;
    }
    if(s->last+n-1<=max)
    {
        for(i=s->last+n-1;i>=n+pos-1;i--)       //这没看懂,,,
            s->ch[i]=s->ch[i-n];
        for(i=0;i<n;i++)
            s->ch[i+pos]=b[i];
        s->last+=n;
    }
    else if(pos+n<=max)
    {
        for(i=max-1;i>n+pos-1;i--)     //这没看懂,,
            s->ch[i]=s->ch[i-n];
        for(i=0;i<n;i++)
            s->ch[i+pos]=b[i];
        s->last=max;
    }
    else
    {
        for(i=0;i<max-pos;i++)     //这没看懂,,
            s->ch[i+pos]=b[i];
        s->last=max;
    }
}
int main()
{
    string s;
    int n=0,pos;
    char a[100],b[100];
    InintString(&s,max);
    printf("请输入字符串:\n");
        scanf("%s",a);
    for(int i=0;a[i]!='\0';i++)
    {
        n++;
    }
    CreateString(&s,a,n);
    printf("请输入你要插入的字符串:\n");
        scanf("%s",b);
    for(int i=0,n=0;b[i]!='\0';i++)
    {
        n++;
    }
    printf("请输入你要插入的位置:\n");
        scanf("%d",&pos);
    StrInsert(&s,b,n,pos);
    printf("新的字符串为:\n");
        printf("%s\n",s.ch);
    return 0;
}

做注释那几行没看懂
然后,形成的新的字符串总少一个元素
求解释。

[此贴子已经被作者于2017-10-17 21:50编辑过]

搜索更多相关主题的帖子: 字符串 max int for printf 
2017-10-17 21:16
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 2楼 吹水佬
图片附件: 游客没有浏览图片的权限,请 登录注册

用我的代码插入一个字符有问题,插入一个字符串没问题。
这是怎么回事?
2017-10-18 12:25
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
插入一串字符没问题。一串就有错了、
2017-10-18 12:43
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 5楼 wmf2014
改成100也不对。。
老师让看的。。
2017-10-18 17:44
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
还请各位大佬帮忙看下,这段代码调好后要上交的。
插入的字符串长点没问题,短了就报错
2017-10-18 18:50
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 8楼 wmf2014
图片附件: 游客没有浏览图片的权限,请 登录注册

输入一串字符没问题,输入一个字符就错了,如上图。
2017-10-21 11:49
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
收藏
得分:0 
回复 10楼 wmf2014
好吧,。。我用的devc++ 编译出错。。
谢谢你。
2017-10-23 21:38
快速回复:数据结构串的问题,在输入的指定位置前插入字符串
数据加载中...
 
   



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

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