为什么这个程序不会在Linux上运行,而是在Windows上运行?

时间:2016-10-23 23:44:18

标签: c linux

所以我必须建立一个小小的游戏,要求玩家选择一个数字,看看他们是否猜到了电脑选择的东西。它有2个玩家,每个玩家可以轮到另一个玩家。 其中一条规定是我的教授正在运行一个Linux操作系统并且已经说过如果它不起作用那么它就是一个洗牌。当我在codeblocks中运行代码时,工作会找到并完成它应该做的事情。如果玩家通过并且显示输出消息并且转弯开关。

当我在linux服务器上运行代码时,它总是将turnInput的{​​{1}}评估为“PASS”之外的其他内容,它将playTurn()返回为false并移至{{1} }}

当我在Windows上的代码块上运行时,它很好并且完全应该做到了。当我编译它时,我没有得到任何警告和Linux本身就是一个我以前从未处理过的操作系统。是否有理由将其传递给代码?

if(strcmp(turnInput, passValue) == 1)

1 个答案:

答案 0 :(得分:3)

strcmp有3个可能的返回码:

  1. <0
  2. ==0
  3. >0
  4. 没有具体的==1,因此假设您可以说==1,这是不安全或便携的。请改用>0

    这实际上是一个很好的可移植性和移植问题的例子 - 从问题来看,显然==1适用于Windows,但是将代码移植到Linux并停止。我不确定windows文件是否为“-1,0,1”,或者它是否只是一个恰好正常工作的假设,但正如OP发现的那样:“Gotcha !!”