求助 ,关于两个链表连接的问题

代码如下,为何输出的总是第一个链表中的元素?
#include
#include
//#define NULL 0
typedef struct node
{
char ch;
struct node *next;
}STRNODE;
void str_input(STRNODE *s) //串的输入函数/
{
char ch;
STRNODE *p,*q;
p=s;
q=s->next;
s->ch=0;
while((ch=getchar())!='\n') //通过循环,从键盘输入一串字符串
{
q=(STRNODE *)malloc(sizeof(STRNODE));
q->ch=ch;
q->next=NULL;
p->next=q;
p=q;
s->ch++;
}
}
STRNODE *str_con(STRNODE *s1,STRNODE *s2)
//将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中/
{
STRNODE *p;
p=s1;
while(p->next!=NULL)
{
p=p->next;
}
p->next=s2;
return s1;
}
void str_print(STRNODE *s)
{//字符串输出显示
int i;
STRNODE *p;
p=s->next;
for(i=0;ich;i++)
{
putchar(p->ch);
p=p->next;
}
printf("\n");
}
int main()
{
STRNODE str1,str2;
printf("请输入第一串字符:");
fflush(stdin);
str_input(&str1);
printf("请输入第二串字符串:");
fflush(stdin);
str_input(&str2);
str_con(&str1,&str2);
printf("两串字符连接后的结果为:");
str_print(&str1);
}
图片说明

两个问题:
1.str_con函数内p->next = s2;应该是p->next = s2->next;
2.str_con函数内少了一句s1->ch += s2->ch;

 #include<stdio.h>
#include<stdlib.h>
//#define NULL 0
typedef struct node
{
    char ch;
    struct node *next;
}STRNODE;
void str_input(STRNODE *s)          //串的输入函数/
{
    char ch;
    STRNODE *p, *q;
    p = s;
    q = s->next;
    s->ch = 0;
    while ((ch = getchar()) != '\n')         //通过循环,从键盘输入一串字符串
    {
        q = (STRNODE *)malloc(sizeof(STRNODE));
        q->ch = ch;
        q->next = NULL;
        p->next = q;
        p = q;
        s->ch++;
    }
}
STRNODE *str_con(STRNODE *s1, STRNODE *s2)
//将字符串S2连接到S1串的后面,两个串合并成一个串,放到S1串中/
{
    STRNODE *p;
    p = s1;
    while (p->next != NULL)
    {
        p = p->next;
    }
    p->next = s2->next;
    s1->ch += s2->ch;
    return s1;
}
void str_print(STRNODE *s)
{//字符串输出显示
    int i;
    STRNODE *p;
    p = s->next;
    for (i = 0; i<s->ch; i++)
    {
        putchar(p->ch);
        p = p->next;
    }
    printf("\n");
}
int main()
{
    STRNODE str1, str2;
    printf("请输入第一串字符:");
    fflush(stdin);
    str_input(&str1);
    printf("请输入第二串字符串:");
    fflush(stdin);
    str_input(&str2);
    str_con(&str1, &str2);
    printf("两串字符连接后的结果为:");
    str_print(&str1);
}