Devido a que você não esta alterando o valor de ptr.
O valor de ptr é o mesmo do inicio do array s (devido a char *ptr = s;) e continua assim.
De forma identica a outros tipos, como int, char, os operadores de pós incremento, retornam o valor e imediatamente após modificam o valor para ser o sucessor do valor atual.
Com tipos padrão sem sobrecarga (no caso de C++), ptr++ é equivalente a ptr = ptr + 1