为什么我的代码运行输出不对啊?

6-10 英美姓名(*)
分数 10
作者 李祥
单位 湖北经济学院
英美人的姓名比较复杂,一般都由三个名字组成:教名、自取名和姓氏。假设所有名字的长度均不超过30个字符。

请编写函数,根据教名、自取名和姓氏,生成完整的名字。
输入样例1
Lionel
Brockman
Richie
输出样例1
Lionel Brockman Richie
输入样例2
Karen
(空行)
Carpenter
输出样例2
Karen Carpenter
输入样例3
(空行)
(空行)
Foster
输出样例3
Foster
输入样例4
(空行)
(空行)
(空行)
输出样例4
Noname
代码长度限制
16 KB
时间限制
100 ms
内存限制
64 MB

函数原型
void FullName(char *full, const char *first, const char *middle, const char *last);
裁判程序
#include <stdio.h>
#include <string.h>

void FullName(char *full, const char *first, const char *middle, const char *last);

int main()
{
    char full[128], first[128], middle[128], last[128];
    gets(first);
    gets(middle);
    gets(last);
    FullName(full, first, middle, last);
    puts(full);
    return 0;
}
```c
//我的解答
void FullName(char *full, const char *first, const char *middle, const char *last)
{
    int i=0,j=0;
    for(j = 0;j < strlen(first); j++)
    {
        full[i++] == first[j];
    }
    if(i != 0 && middle[0] != '\0')
    {
        full[i++]=' ';
    }
    for(j = 0;j < strlen(middle); j++)
    {
        full[i++] = middle[j];
    }
    if(i!=0 && last[0] != '\0')
    {
        full[i++]=' ';
    }
    for(j = 0;j < strlen(last); j++)
    {
        full[i++] = last[j];
    }
    if(i==0)
        {
        strcpy(full,"Noname");
        full[6]='\0';
        }
    else 
    full[i]='\0';
    }

```


26行多了个=   full[i++] == first[j];