| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1817 人关注过本帖, 1 人收藏
标题:串的定长顺序存储,帮忙看哪错了,运行后是乱码
只看楼主 加入收藏
春风吹又吹
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-10-22
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:2 
串的定长顺序存储,帮忙看哪错了,运行后是乱码
#include"stdio.h"
#include"malloc.h"
#define maxsize 256
typedef struct
{
char ch[maxsize+1];
int length;
}string;
int concat(string&t,string&s1,string&s2)
{


if(s1.length+s2.length<maxsize)
{for(int i=0;i<s1.length;i++)
t.ch[i]=s1.ch[i];
for( i=0;i<s2.length;i++)
t.ch[s1.length+i]=s2.ch[i];
t.length=s1.length+s2.length;
t.ch[t.length]='\0';
return 1;
}

else if(s1.length<maxsize)
{for(int i=0;i<s1.length;i++)
t.ch[i]=s1.ch[i];
int m=maxsize-s1.length;
for( i=0;i<m;i++)
t.ch[s1.length+i]=s2.ch[i];
t.length=maxsize;
t.ch[maxsize]='\0';
return 0;


}
else return 0;

}

int main()
{

string t,s1,s2;

char e;
int i=0;

s1.length=s2.length=0;
scanf("%c",&e);
while(e!='\n'){
s1.ch[i++]=e;
s1.length++;
scanf("%c",&e);

}
scanf("%c",&e);
while(e!='\n'){
s2.ch[i++]=e;
s2.length++;
scanf("%c",&e);

}
concat(t,s1,s2);
for(i=0;i<t.length;i++)
printf("%c",t.ch[i]);
return 1;
}
2016-10-22 18:14
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:10 
    scanf("%c",&e);
    while(e!='\n') {
        s2.ch[i++]=e;//s2的i不用重置为0吗? 

另外,出于程序健壮性的考虑,建议楼主增加一个字符串长度监测,确保两个字符串以及连接后的字符串长度都能完整不越界地存储于该定长ch数组中。




[此贴子已经被作者于2016-10-22 22:56编辑过]


φ(゜▽゜*)♪
2016-10-22 22:54
春风吹又吹
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-10-22
收藏
得分:0 
回复 2楼 书生牛犊
谢谢,问题已解决。
2016-10-23 16:37
快速回复:串的定长顺序存储,帮忙看哪错了,运行后是乱码
数据加载中...
 
   



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

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