| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 920 人关注过本帖
标题:数据结构——字符串的插入问题
只看楼主 加入收藏
ithaibo
Rank: 2
等 级:论坛游民
帖 子:52
专家分:50
注 册:2012-3-30
结帖率:50%
收藏
 问题点数:0 回复次数:4 
数据结构——字符串的插入问题
图片附件: 游客没有浏览图片的权限,请 登录注册
插入操作:将串s1插入到串s中的第i个位置,并产生新串s2.但是出现了输出时,插入的那一部分出现了乱码。
程序代码:
/*

 * 建立串s="abcdefghijklmn"和串s1="xyz"

 * 输出s

 * 输出串s的长度

 * 在串s的第9个字符位置插入串s1而产生串s2

 * 输出串s2

 * 删除串s中的第2个字符开始的5个字符而产生的串2

 * 输出串s2

 * 将串s的第2个字符开始的5个字符替换为s1而产生的串s2

 * 输出串s2

 * 提取串s中的第2个字符开始的10个字符而产生串s3

 * 输出串s3

 * 将串s1和串s2连接起来儿产生串s4

 * 输出串s4

 */
#include <stdio.h>
#include <stdlib.h>
#define Max 100
typedef struct String{
    char data[Max];
    int length;
}SqString;
void CreatStr(SqString *s, char temp_s1[]);
void DispStr(SqString s);
int StrLen(SqString s);
SqString InserStr(SqString s, int i, SqString s1);
int main(void) {
    SqString s, s1, s2, s3, s4;
    char temp_s1[]="abcdefghijklmn";
    char temp_s2[]="pqrst";
    CreatStr(&s, temp_s1);
    CreatStr(&s1, temp_s2);
    DispStr(s);
    printf("The length of the string of 's' is %d\n",StrLen(s));
    s2=InserStr(s, 9, s1);
    DispStr(s1);
    DispStr(s2);
    return 0;
}
void CreatStr(SqString *s, char temp_s1[]){
    int i;
    s->length=0;
    for(i=0; temp_s1[i]!='\0'; i++)
        s->data
        [i]=temp_s1[i];
    s->length=i;
}
void DispStr(SqString s){
    int i;
    if(s.length<=0)
        return;
    for(i=0; i<s.length;i++)
        printf("%c",s.data[i]);
    printf("\n");
}
int StrLen(SqString s){
    return s.length;
}
SqString InserStr(SqString s, int i, SqString s1){//在串s的第i个字符位置插入串s1而产生串s2
    int j;
    SqString s2;
    s2.length=0;
    if(i<=0||i>s.length+1)
        return s2;
    for(j=0; j<i-1; j++)
        s2.data[j]=s.data[j];
    for(j=0; j<s2.length; j++)
        s2.data[i+j-1]=s1.data[j];
    for(j=i-1; j<s.length; j++)
        s2.data[j+s1.length]=s.data[j];
    s2.length=s.length+s1.length;
    return s2;
}

代码如下
搜索更多相关主题的帖子: 字符串 
2013-04-13 10:33
ithaibo
Rank: 2
等 级:论坛游民
帖 子:52
专家分:50
注 册:2012-3-30
收藏
得分:0 
大家捧捧场呀!求关注
2013-04-13 10:51
不玩虚的
Rank: 9Rank: 9Rank: 9
来 自:四川
等 级:贵宾
威 望:10
帖 子:331
专家分:1301
注 册:2012-12-9
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
#define Max 100
typedef struct String{
    char data[Max];
    int length;
}SqString;
void CreatStr(SqString *s, char temp_s1[]);
void DispStr(SqString s);
int StrLen(SqString s);
SqString InserStr(SqString s, int i, SqString s1);
int main(void) {
    SqString s, s1, s2, s3, s4;
    char temp_s1[]="abcdefghijklmn";
    char temp_s2[]="pqrst";
    CreatStr(&s, temp_s1);
    CreatStr(&s1, temp_s2);
    DispStr(s);
    printf("The length of the string of 's' is %d\n",StrLen(s));
    s2=InserStr(s, 9, s1);
    DispStr(s1);
    DispStr(s2);
    return 0;
}
void CreatStr(SqString *s, char temp_s1[]){
    int i;
    s->length=0;
    for(i=0; temp_s1[i]!='\0'; i++)
        s->data[i]=temp_s1[i];
    s->length=i;
}
void DispStr(SqString s){
    int i;
    if(s.length<=0)
        return;
    for(i=0; i<s.length;i++)
        printf("%c",s.data[i]);
    printf("\n");
}
int StrLen(SqString s){
    return s.length;
}
SqString InserStr(SqString s, int i, SqString s1){//在串s的第i个字符位置插入串s1而产生串s2
    int j;
    SqString s2;
    s2.length=0;
    if(i<=0||i>s.length+1)
        return s2;
    for(j=0; j<i; j++)
       s2.data[j]=s.data[j];
    for(j=0; j<s1.length; j++)
        s2.data[i+j]=s1.data[j];
    for(j=i; j<=s.length;j++)
    { s2.data[j+s1.length]=s.data[j];
    }
   
    s2.length=s.length+s1.length;
    return s2;
}//改好了,楼主你参考,那个i位置,我不知道它应该在前面还是后面,后面的话你自己改改,有问题再讨论

同学习......同进步....你帮我......我帮你.....上善若水.....
2013-04-13 23:31
ithaibo
Rank: 2
等 级:论坛游民
帖 子:52
专家分:50
注 册:2012-3-30
收藏
得分:0 
谢谢啦!终于发现了!哎,粗心啊……for(j=0; j<s2.length; j++)//这里不应该是s2.length,而是s1.length


[ 本帖最后由 ithaibo 于 2013-4-15 12:17 编辑 ]
2013-04-15 12:12
nuistkevin
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2013-4-15
收藏
得分:0 
猎头职位-软件工程师
岗位职责
1.与世界顶尖的软件工程师共同开发虚拟化云计算产品
2.能独立处理和解决所负责的任务;
3.进行程序单元、功能的测试,查出软件存在的缺陷并保证其质量。
任职资格
1、 211或985高校计算机科学与技术或软件专业,英文流利;
2、 具有很强的学习能力和解决问题的能力;
3、 至少3年以上软件开发经验,精通C语言/C++,热衷于技术专研;
4、 熟练的数据结构知识体系与较强的算法能力,对堆栈、2X树、多X树有一定了解
5、 熟悉Windows, Linux X86/64 操作系统;
6、 熟悉Network configurations and environments;

工作地点:上海
有意者可以发送您的中英文简历至邮箱:
junpingwu@
QQ:2571168815
2013-04-15 12:39
快速回复:数据结构——字符串的插入问题
数据加载中...
 
   



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

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