Условие while никогда не может быть ложным и прерывать цикл.
Если значение равно любому другому символу, кроме '\ n' или '\ 0', оно, очевидно, будет истинным, и цикл продолжится.
Но, предполагая, что значение равно '\ n'. Условие оценивается как while ('\n' != '\n' || '\n' != '\0')
, таким образом while (false || true)
, таким образом while (true)
.
Теперь при условии, что значение равно '\ 0': while ('\0' != '\n' || '\0' != '\0')
равно while (true || false)
равно while (true)
.
Что вам нужно (как условие), это что-то вроде while (! (value == '\n' || value == '\0'))
или (возможно, лучше) while (value != '\n' && value != '\0')
.