鱼C论坛

 找回密码
 立即注册
查看: 2196|回复: 0

数据结构顺序串,在创建连接动态分配时除了问题。

[复制链接]
发表于 2012-4-15 01:02:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<stdlib.h>
#define MAX 1024
typedef struct
{
char ch[MAX];
int len;
}seqstring;
seqstring  strconcat(seqstring *str,seqstring *s,seqstring *t)
{
/*int i;
for(i=0;i<s->len;i++)
  str->ch[i]=s->ch[i];
for(i=0;i<t->len;i++)
  str->ch[i+s->len]=t->ch[i];
str->len=s->len+t->len;
return *str;
/* int i;
for(i=0; i<t->len; i++)
  s->ch[i+s->len] = t->ch[i];
s->len = s->len+t->len;
return *s;
*/
int i;
str=(seqstring*)malloc(s->len+t->len);
if(str==NULL)
  exit(1);
for(i=0;i<s->len;i++)
  str->ch[i]=s->ch[i];
for(i=s->len;i<s->len+t->len;i++)
  str->ch[i]=t->ch[i-s->len];
s->len+=t->len;
free(s->ch);
return *str; 这里的动态分配似乎出了问题,程序没错误 但是编译自动出现内存错误提示。 静态分配在注释那里,但是动态配就有点搞不懂了。高手指点下,我这个程序怎么改下?是出在实参那里还是形参?
}
void strassign(seqstring *str,char cstr[])
{
int i;
for(i=0;cstr[i]!='\0';i++)
  str->ch[i]=cstr[i];
str->len=i;
}
void output(seqstring *s)
{
int i;
for(i=0;i<s->len;i++)
  printf("%c",s->ch[i]);
printf("\n");
}
int strlength(seqstring *s)
{
return s->len;
}
void strcopy(seqstring *s,seqstring *t)
{
int i;
for(i=0;i<t->len;i++)
  s->ch[i]=t->ch[i];
s->len=t->len;
}

int main(void)
{
char c[100];
seqstring str;
seqstring str_;

printf("Enter a create string:");
scanf("%s",c);
strassign(&str,c);
output(&str);
int i=strlength(&str);
printf("string length is:%d\n",i);

printf("The string to be copied:\n");
char tempc[100];
seqstring tstr;
scanf("%s",tempc);
strassign(&tstr,tempc);
strcopy(&str,&tstr);
output(&str);

printf("Will connect the two strings:\n");
strassign(&str,c);
strassign(&tstr,tempc);

seqstring  newstr=strconcat(&str_,&str,&tstr);
output(&newstr);
return 0;

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 19:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表