小白求助,我的过滤字符串中多余的空格的代码行不通,不知道问题出在哪里

#include<stdio.h
#include<string.h
int main()
{
int i,j=0;
char ch[256];
char th[256];
gets(ch);
int len=strlen(ch);
for(i=0;i<len;i++)
{

if(ch[i]!=" ")
{
th[j]=ch[i];
j++;

    }

else if(ch[i+1]!=" ") th[j]=ch[i];
j++;
}
printf("%s",th);
return 0;
}
我的代码无法实现过滤多余空格的操作
输入Hello world.This is c language.
只能出来个.
哪里出现了问题

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j;
    char ch[256] = {};
    char th[256] = {};
    gets(ch);
    int len=strlen(ch);
    j=0;
    for(i=0;i<len;i++)
    {
        if(ch[i]!= ' ')
            th[j++]=ch[i];
        else if(ch[i+1]!= ' ')
            th[j++]=ch[i];
    }
    printf("%s",th);
    return 0;
}

for(i=0;i<len;i++)
{ int j=0; // 每次回到这边都变成j=0 了 永远没有实现 th[1]的赋值
.....