Comment faire pour supprimer toutes les occurrences d'un caractère donné de chaîne en C?

Je suis d'essayer de supprimer un caractère à partir d'une chaîne de caractères en C. Le problème que j'ai avec mon code, c'est qu'il supprime la première occurrence du caractère de la chaîne mais aussi des lingettes de tout ce qui suit ce caractère dans la chaîne. Par exemple, en supprimant 'l' à partir de 'bonjour' impression de "il", plutôt que "heo'

int i;
char str1[30] = "Hello", *ptr1, c = 'l';
ptr1 = str1;
for (i=0; i<strlen(str1); i++)
{
    if (*ptr1 == c) *ptr1 = 0;
    printf("%c\n", *ptr1);
    ptr1++;
}

J'ai besoin d'utiliser des pointeurs pour cette et souhaite le garder aussi simple que possible, car je suis un débutant en C.
Grâce

Astuce: lors de l'enlèvement, vous souhaitez décaler les autres lettres jusqu'à couvrir ceux que vous retirez. *ptr1 = 0; n'est pas la façon de le faire.
Vous êtes également à l'aide d'une/de la boucle à l'adresse de l'index de chaque char, mais vous n'êtes jamais à l'aide de l'indice réel (Valeur de i)
Une autre chose à retenir, dans les CS, les chaînes sont null.
CS?
Double Possible de supprimer toutes les occurences d'un caractère dans la chaîne C - Exemple nécessaire

OriginalL'auteur boutrosc | 2012-03-27