把两个字符串连接起来帮忙找一下错

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:07:33
题目是使用指针函数编程,把两个字符串连接起来,我写的是
#include <iostream.h>
#include <string.h>
#include <conio.h>
char * connect(char *,char *);
void main ()
{
char *s1=new char [64]; //动态分配字符型数组
char *s2=new char [64];
char s[150];
cout <<"请输入第一组字符"<<endl;
cgets(s1); //吸入用户的输入可以包含空格
cout <<"请输入第二组字符"<<endl;
cgets(s2);
for (unsigned int t=0;t<150;t++)
{
if(connect (s1,s2)[t]!='\0')
cout<<connect (s1,s2)[t];
}
cout<<endl;
delete []s1; //释放空间
delete []s2;
s1=NULL;
s2=NULL;
}
char * connect (char *s1,char *s2) //定义一个指针函数
{
unsigned int i,k;
char s[150];
for(i=0;i<(strlen(s1)-2);i++)
{
if (s1[i+2]!='\0')//把s1传递给s
s[i]=s1[i+2];
}
for(k=0;k<(strlen(s2)-2);k++) //s接收s1

connect()中的变量s是一个局部变量,离开connect()函数后即被删除,应该将其声明为static变量。

即:

char s[150];

改为

static char s[150];

修改后的程序如下:

//---------------------------------------------------------------------------
#include <iostream.h>
#include <string.h>
#include <conio.h>
char * connect(char *,char *);
void main ()
{
char *s1=new char [64]; //动态分配字符型数组
char *s2=new char [64];
char s[150];
cout <<"请输入第一组字符"<<endl;
cgets(s1); //吸入用户的输入可以包含空格
cout <<endl<<"请输入第二组字符"<<endl;
cgets(s2);
cout<<endl;
for (unsigned int t=0;t<150;t++)
{
if(connect (s1,s2)[t]!='\0')
cout<<connect (s1,s2)[t];
}
cout<<endl;
delete []s1; //释放空间
delete []s2;
s1=NULL;
s2=NULL;
}
char * connect (char *s1,char *s2) //定义一个指针函数
{
unsigned int