C语言 设计一个函数 连接字符串生成新字符串返回

设计一个函数,吧两个字符串连接起来生成新字符串返回,函数原型如下
void fun(cha* s,char* t,char* str)
主函数里输入输出字符串
void main()
{
char s1[N],s2[N],s3[N];
printf("输入1字符串");
gets(s1);
printf("输入2字符串");
gets(s2);
fun(s1,s2,s3);
printf("%s\n",s3);
}

void fun(char *s,char *t,char *str)
{
char *p=s;
while(*p++);//确定s中/0的位置
--p;
while((*p=*t)&&*t!='/0')//将t拼接到s后
{p++;t++;}
str=s;
}
注意你的主函数中的N要用一个足够大的数,保证有足够大的空间追问

我写了一个,但是有时候输出乱码,帮我看看问题出在哪儿了
void fun(char*s,char*t,char*str)
{
int i,j;
for(i=0;*(s+i)!='\0';i++)
{
*(str+i)=*(s+i);
}//
for(j=0;*(t+j)!='\0';j++)
{
*(str+i+j)=*(t+j);
if(*(str+i+j)!='\0')
{
continue;
}
}
}

追答

void fun(char*s,char*t,char*str)
{
int i,j;
for(i=0;*(s+i)!='\0';i++)
*(str+i)=*(s+i);
for(j=0;*(t+j)!='\0';j++)
*(str+i+j)=*(t+j);
*(str+i+j)='/0';
}
修改了一下,没有调试,你自己看看有什么问题没有

追问

使用*(str+i+j)='/0';完美通过,另外解释一下
请问用if语句该怎么写这条语句,我试了几种都出现乱码

追答

抱歉那一句:*(str+i+j)='/0';里面打错了,是'\0'。你的问题是什么意思?为什么要用if语句呢?

追问

第二个for循环*(str+i+j)='\0'这个我没弄明白,执行完赋值后判断截止?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-11
有字符串连接函数strcat(char *s1,char*s2),
连接后的字符串首址由S1指定追问

问题是不用这个链接函数的前提

追答

那你就用数组一个一个移过去呗

第2个回答  2011-04-11
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *destin, char *source);
程序例:

#include <string.h>
#include <stdio.h>

int main(void)
{
char destination[25];
char *blank = " ", *c = "C++", *Borland = "Borland";

strcpy(destination, Borland);
strcat(destination, blank);
strcat(destination, c);

printf("%s\n", destination);
return 0;
}
第3个回答  2011-04-11

这是我编的程序,希望对你有帮助:

#include "stdio.h"

void fun(char *s,char *t)

{  

   printf("%s", strcat(s,t));

   }

 main()

{

   char s1[40],s2[40];

   printf("输入1字符串:");

   gets(s1);

   printf("输入2字符串:");

   gets(s2);

   fun(s1,s2);

  }

运行结果如图:

相似回答