'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)
这里要提两件事:
问题是您正在尝试将字符串文字与 char 数组进行比较。 C 找不到相同的东西,因为“==”比较运算符不是以这种方式实现的。
执行该比较有两种选择:
1) 使用 strcmp() 函数,来自 string.h 库
2) 手动比较数组中的字符和字符串文字
当然,第一个选项是最简单和最干净的。
我完全知道这是由于我在用 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)
这里要提两件事:
问题是您正在尝试将字符串文字与 char 数组进行比较。 C 找不到相同的东西,因为“==”比较运算符不是以这种方式实现的。
执行该比较有两种选择:
1) 使用 strcmp() 函数,来自 string.h 库
2) 手动比较数组中的字符和字符串文字
当然,第一个选项是最简单和最干净的。