Вновь из Кернигана-Ритчи не могу понять устройство следующей функции. 
Цитата: "Для примера рассмотрим функцию squeeze (s, с), которая удаляет все вхождения
символа с из строки s.
/* squeeze: удаляет все символы с из строки s */
void squeeze(char s [] , int c)
{
    int i, j ;
    for (i = j = 0; s[i] != '\0'; i++)
    if (s[i] != c)
        s [j+ + ] = s [i] ;
    s[j] = '\0';
}
Всякий раз, когда встречается символ, отличный от с, он копируется в текущую
позицию j, и только затем j инкрементируется, чтобы подготовиться к приему
следующего символа. Эта форма в точности эквивалентна следующей":
if (s[i] != с) { 
    s[j] = s[i] ;
    j++;
}
Вопрос:
Почему после первого, отличного от 'с' символа цикл продолжает выполняться? Допустим s[0] отличен от с, тогда s[1] = '\0', но ведь в заголовке for s[i] != '\0'. Объясните пожалуйста.