要求用两种方法合并两个字符串,一个用strcat,一个自己写函数,我自己写的这个函数哪里错了呀print出来总是少两个字符

要求用两种方法合并两个字符串,一个用strcat,一个自己写函数,我自己写的这个函数哪里错了呀print出来总是少两个字符

问题描述:

#include<stdio.h>
#include<string.h>
void fun(char s1[],char s2[]);
int main()
{
char str1[50];
char str2[50];
setvbuf(stdout,NULL,_IONBF,0);
printf("Please input two strings:\n");
scanf("%s %s",str1,str2);
fun(str1,str2);
printf("Output:%s\n",strcat(str1,str2));
}
void fun(char s1[],char s2[])
{
int i;
for(i=0;s2[i]!='\0';i++)
{
s1[strlen(s1)+i]=s2[i];
}
printf("Output:%s\n",s1);
}

修改如下,供参考:

#include<stdio.h>
#include<string.h>
void fun(char s1[], char s2[]);
int main()
{
    char str1[50];
    char str2[50];
    setvbuf(stdout, NULL, _IONBF, 0);
    printf("Please input two strings:\n");
    scanf("%s %s", str1, str2);
    fun(str1, str2);
    printf("Output:%s\n", strcat(str1, str2));
    return 0;
}
void fun(char s1[], char s2[])
{
    int i=0,j;
    while (s1[i]) i++;
    for (j = 0; s2[j] != '\0'; j++)
    {
        s1[i++] = s2[j];
    }
    s1[i] = '\0';
    printf("Output:%s\n", s1);
}