Похоже, у вас сложилось впечатление, что условие:
(sen[i] != ' '||sen[i] != '\0')
является логическим отрицанием:
(sen[i] == ' '||sen[i] == '\0')
Это не так. Законы Деморгана диктуют логическую эквивалентность логических выражений.
Общий случай того, что вы хотите, это !(A || B) == (!A && !B)
.Таким образом, вы можете переместить отрицание внутри сгруппированного выражения, но логическое ИЛИ превращается в логическое И, и наоборот.
В вашем конкретном случае обратное последнее условие имеет вид:
!(sen[i] == ' ' || sen[i] == '\0')
Что становится:
(sen[i] != ' ' && sen[i] != '\0')
Говоря через это, вы хотите добавить к wrd
, если оба sen[i]
не являются пробелом И sen[i]
не является новой строкой.Вместо этого вы сказали, что хотите добавить к wrd
, если либо sen[i]
не является пробелом, ИЛИ sen[i]
не является новой строкой. Любой символ не является пробелом или переводом строки, поэтому это условие всегда будет истинным.