【问题标题】:Comparing a single string to an array of strings in C将单个字符串与 C 中的字符串数组进行比较
【发布时间】:2013-09-14 21:56:26
【问题描述】:

我的程序正在接受用户输入,然后将输入的第一个单词与接受的命令数组进行比较。将输入的第一个单词(在它被标记化之后)与字符串数组进行比较的最佳方法是什么?

例子:

将字符串"pwd" 与包含{"wait", "pwd", "cd", "exit"} 的数组进行比较

提前感谢您的帮助!

【问题讨论】:

  • 如何定义字符串和字符串数组之间的比较?
  • 字符串数组有多大? 100k 个字符串的解决方案与 5 个字符串的解决方案不同。 @H2CO3,我相信他的意思是in
  • @MattBryant 嗯,然后线性搜索大小为 4 的数组。也许吧。
  • 当然。但如果他有一个大数组,那么他可能应该研究二进制搜索然后strncmp。或者他可以使用尝试。或者任何数量的很酷的东西。
  • @Mr.Student No. @Gangadhar 我没有任何相关代码要发布。我只有数组const char* cmds[] = {"wait", "pwd", "cd", "exit"};,我的程序需要比较用户输入的字符串(第一个单词存储在变量中),看看它是否匹配cmd 中的任何元素。

标签: c arrays string strncmp


【解决方案1】:

我会做如下的事情:

int string_in(const char* string, const char** strings, size_t strings_num) {
    for (size_t i = 0; i < strings_num; i++) {
        if (!strcmp(string, strings[i])) {
            return i;
        }
    }
    return -1;
}

检查数组中的每个字符串,如果相同则返回索引。如果未找到,则返回 -1
注意:易受溢出等影响,请在尝试使用此代码之前修复它们。这会让你知道该怎么做,但这不是好的代码。

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多