';如果';条件在我的C代码中未按预期工作
我完全知道这是因为我在用C编写基于文本的计算器项目时忽略了一些错误,但我不到一周前才开始学习C,所以请帮助我 因为整个代码是119行,所以我将只在真正的问题所在的地方发布必要的代码片段:(编译期间没有错误,因此除了这些行之外没有错误) 错误在于,即使在完美地输入CALCULATE、Factorse或AVERAGE之后,如果输入无效(即,如果没有输入这3个输入),我仍然会收到我编程的错误消息。它应该继续问我希望操作的第一个数字,就像为计算输入编写的一样';如果';条件在我的C代码中未按预期工作,c,visual-studio,gets,C,Visual Studio,Gets,我完全知道这是因为我在用C编写基于文本的计算器项目时忽略了一些错误,但我不到一周前才开始学习C,所以请帮助我 因为整个代码是119行,所以我将只在真正的问题所在的地方发布必要的代码片段:(编译期间没有错误,因此除了这些行之外没有错误) 错误在于,即使在完美地输入CALCULATE、Factorse或AVERAGE之后,如果输入无效(即,如果没有输入这3个输入),我仍然会收到我编程的错误消息。它应该继续问我希望操作的第一个数字,就像为计算输入编写的一样 代码运行良好,在VS2013中没有错误,因此
代码运行良好,在VS2013中没有错误,因此我确信这不是语法错误,而是我在这几行中做的愚蠢的事情 如果使用
==
则比较的是两个数组的地址,而不是数组的内容
相反,您需要执行以下操作:
if (strcmp(choice, "CALCULATE") == 0)
这里要提到两件事:
==
问题是您试图将字符串文字与字符数组进行比较。因为“==”比较运算符不是以这种方式实现的,所以C没有发现这些东西是相同的 执行该比较有两个选项: 1) 使用string.h库中的strcmp()函数 2) 手动比较数组中的字符和字符串文字
当然,第一种选择是最简单、最干净的。你不知道;t使用
==
比较C中的字符串。您使用strcmp()
对,谢谢,我来自Python。。。。那么我到底应该怎么做呢?另外,永远不要使用gets()
,而是使用fgets()
。这能回答你的问题吗?谢谢,应该可以解决了。我还没有研究数组,我只是根据我从Python学到的东西来学习。我不确定你的问题是什么,但这应该是一个单独的问题。fgets()避免了缓冲区溢出,这是真的,但增加了不必要的步骤,而且说真的,只有我才会使用这个项目。@AnAnt不管是什么情况,如果你想写正确和标准的投诉代码,你不能使用gets()
。我是为自己编写代码的,我尊重你的标准化直觉,但对我和我的4个朋友来说,这真的没那么重要,对吧?@AnAnt接受你的选择,但我建议,如果你在做什么,就把它做好。谢谢,我会这么做的。我来自Python,所以我几乎是本能地这么做的。
if (strcmp(choice, "CALCULATE") == 0)