Si on contracte la chaîne, en gérant la position (pointeur) de lecture et celle d'écriture, il y a même moyen de ne pas créer de chaîne nouvelle.
On lit un caractère, si "bon", on lit le suivant. Si pas bon (selon le critère choisi), on explore les suivants (jusqu'à fin de chaîne) pour les réécrire à leur future place. A la fin, on met un '\0' après le dernier caractère pour terminer la chaîne.