在比较fgets()中用c语言红色的字符串的 n时,得到细分故障



我正在编写一个程序来扭转字符串中的单词,即 "abc def""def abc"

我使用fgets()读取输入。我正在使用:

for(j = i;((buff[i] != ' ') || (buff[i] != 'n'));i++ );

识别线路的空间或末端。

,但我最终遇到了分段故障。

单独检查空间,一切正常。

请帮助我。

((buff[i] != ' ') || (buff[i] != 'n'))

这意味着"在字符不是空间的时候继续前进不是newline。

由于字符永远不能同时是空间和新线,因此至少这些子条件的一个始终是正确的。让我们以几个例子:

value    (value != ' ')  (value != 'n')  or'ed result
-------  --------------  ---------------  ------------
space        false           true             true
newline      true            false            true
'A'          true            true             true

因此,您有一个无限的循环,几乎可以肯定是引起您问题的原因。

我建议您用更正确的 &&替换 ||,如"在角色是空间的情况下继续前进,而不是newline":

value    (value != ' ')  (value != 'n')  and'ed result
-------  --------------  ---------------  -------------
space        false           true             false
newline      true            false            false
'A'          true            true             true

相关内容

  • 没有找到相关文章

最新更新