标题:串的定长顺序存储,帮忙看哪错了,运行后是乱码
只看楼主
春风吹又吹
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-10-22
结帖率:100%
已结贴  问题点数: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470111-1-1.html




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

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