'If' 条件在我的 C 代码中没有按预期工作

'If' Condition Not Working As Expected In My C Code

我完全知道这是由于我在用 C 编写基于文本的计算器项目时忽略了一些错误,但我才开始学习 C 不到一周,所以请帮助我!

由于整个代码有 119 行,我只 post 真正问题所在的必要片段:(编译过程中没有错误,因此没有超出这些行的错误)

char choice[15];
    printf("Type 'CALCULATE' or 'FACTORISE' or 'AVERAGE' to choose function :\n");
    gets(choice);
    if (choice == "CALCULATE")

错误是,即使在完全输入 CALCULATE 或 FACTORISE 或 AVERAGE 之后,我仍然会收到我在输入无效时编程的错误消息(即,如果输入了这 3 个输入中的 none 个)。它 应该 继续询问我想要操作的第一个数字,正如为 CALCULATE 输入所写的那样。

代码运行良好,在 VS 2013 中没有错误,所以我确定这不是语法错误,而是我在这几行中所做的一些愚蠢的事情。

如果您使用 ==,您比较的是 2 个数组的地址,而不是数组的内容。

相反,您需要这样做:

if (strcmp(choice, "CALCULATE") == 0)

这里要提两件事:

  1. Never use gets() it has serious security issues and is removed from the latest standard. Use fgets() 代替。
  2. 要比较字符串,您应该使用 strcmp(),而不是 ==

问题是您正在尝试将字符串文字与 char 数组进行比较。 C 找不到相同的东西,因为“==”比较运算符不是以这种方式实现的。

执行该比较有两种选择:

1) 使用 strcmp() 函数,来自 string.h

2) 手动比较数组中的字符和字符串文字

当然,第一个选项是最简单和最干净的。