Вновь из Кернигана-Ритчи не могу понять устройство следующей функции.
Цитата: "Для примера рассмотрим функцию 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'. Объясните пожалуйста.