【发布时间】:2014-03-23 15:58:21
【问题描述】:
我知道有 strcmp 但它只是让我比较两个字符串,而且我需要比较很多
这个不行:
if(strcmp (resposta, "S" || "s" || "N" || "n")== 0)
printf("Resposta = S");
else
printf("Resposta != S");
printf("\nfim");
【问题讨论】:
-
你应该写
if(strcmp(resposta, "S") == 0 || strcmp(resposta, "s") == 0 || ...) -
建议
strcmp(str, "char1") || strcmp(str, "char2")...的答案将不起作用,因为它们将始终评估为非空(字符串不相等)。 -
对于这样的情况,只需使用一个集合(基于散列的可能是最好的)并测试
resposta是否在一个集合中。 Set 不是 C 的一个特性,所以你需要自己滚动或使用一些现有的库,或者切换到具有标准集的语言。 -
我想我会用另一种语言来做这个程序:/
-
如果您没有使用 C 的外部原因(例如,小型嵌入式系统、现有代码库、编写与语言无关的共享库、学习 C...),那么几乎任何其他现代语言将使生活更轻松,例如通过提供像 set 这样的标准容器。但是,如果您想使用 C,为此使用一个小的额外库应该不是一个大障碍 :-)