如何比较C中if语句中的多个字符串?

How to compare more than one string in if statement in C?

在 C 语言中,我创建了一个带有虚拟机器人的程序,这样当您启动该程序时,它会自我介绍,我给它起了个名字 Nick。当用户启动程序时,它会询问用户名,我想编写一个代码,如果用户名类似于以下名称:Nick、Nicko、Nic、Nik 或大写字母:NICK、Nicko。 Nic 等程序会像这样问候用户:"Woah! I have the same name..." 但是当用户键入另一个与 Nick 不相似的名字时,程序会像 "Hello (user's name)..." 这样问候他。你能帮我么?提前致谢!

您可以创建一个 cstrigns 数组(类似于 char dictionary[size][size])并用您要检查的单词填充它。然后遍历它,检查输入是否与当前字符串匹配。

其他人建议使用 tables 个别名,但如果您打算处理任意数量的用户,那将有点笨拙。大小写处理比较简单;当您存储此人键入的内容时,还要将所有内容的副本存储在一个案例中以用于比较。这样,您的程序就可以像它们最初那样处理它们。除了 table,您的程序可能会编码它可以在字符串中接受的一些替换规则:ie for y; n代表nn,以及可以忽略的后缀。

根据规则的数量,您可以考虑将规则排序为您普遍应用的规范化函数 - 例如,将所有 ie 替换为 y,删除所有可忽略的后缀等... - 在您存储的字符串的副本;对输入应用相同的归一化函数,然后只比较这些而不是原始的。

当然这里有问题,因为你不想在名字的开头应用大多数规则,有些规则只有在应用于软元音而不是硬元音时才合适;它引入了 soundex 算法,该算法将单词翻译成它们的语音等价物,因此 "science" 和 "scene" 变得比它们的编辑距离可能暗示的更远。至此,您几乎已经实现了拼写校正器。

你的问题陈述看似简单;在这方面已经有很多研究,但有用的打字助手却什么都不是。