Remplacer plusieurs espaces par un seul espace dans C

Je veux repace plusieurs espaces dans une chaîne de caractères par un seul espace, mais mon code ne fonctionne pas. Quelle est la logique d'erreur?

#include<stdio.h>
#include<string.h>
main()
{
char input[100];
int i,j,n,z=0;
scanf("%d",&n);
z=n;
for(i=0;i<n;i++)
scanf("%c",&input[i]);
for(i=0;i<n;i++)
{
    if(input[i]==' ' && (input[i+1]==' ' || input[i-1]==' '))
    {
        --z;
        for(j=i;j<n;j++)
        input[j]=input[j+1];
    }
}
for(i=0;i<z;i++)
    printf("%c",input[i]);
printf("\n");
}
scanf fait quelques question. Au lieu d'utiliser gets OU scanf("%s",input).
mal if(input[i]==' ' && (input[i+1]==' ' || input[i-1]==' '))
quoi de mal?
voir un exemple de code de ma réponse
s'il vous plaît ne pas suggérer gets(). Il est impossible de facile et en toute sécurité n'est plus (depuis 2011) dans le C Standard. Suggérer fgets() qui est tout à fait raisonnable pour la lecture interactive de la saisie de l'utilisateur.

OriginalL'auteur Jaskaran S.P | 2013-05-28