codice:
#include <stdio.h>

main()
{
    char stringa[100];
    
    fgets(stringa, 100, stdin);
    
    char *in, *out;
    in = out = stringa;
    
    while((*in) != '\0') {
        (*out) = (*in);
        out++;
        if((*in) == ' ')
            while((*in) == ' ') in++;
        else
            in++;
    }
    (*out) = '\0';
    
    
    printf("%s", stringa);
    return 0;
}
Questo è fatto meccanicamente, considerando la stringa coma un array di carattere che effettivamente è...

Per ottimizzarlo puoi copiare a parole al posto che a carattere...