在C中比较单个字符串与字符串数组

在C中比较单个字符串与字符串数组,c,arrays,string,strncmp,C,Arrays,String,Strncmp,我的程序接受用户输入,然后获取输入的第一个单词,并将其与接受的命令数组进行比较。将输入的第一个单词(标记化后)与字符串数组进行比较的最佳方法是什么 例如: 将字符串“pwd”与包含{“wait”、“pwd”、“cd”、“exit”} 提前感谢您的帮助 我会做如下事情: int string_in(const char* string, const char** strings, size_t strings_num) { for (size_t i = 0; i < strings

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

例如:

将字符串
“pwd”
与包含
{“wait”、“pwd”、“cd”、“exit”}


提前感谢您的帮助

我会做如下事情:

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;
}
int string\u in(常量字符*字符串,常量字符**字符串,大小字符串\u num){
对于(大小i=0;i
检查数组中的每个字符串,如果相同,则返回索引。如果未找到,则返回
-1


注意:易受溢出等攻击,请在尝试使用此代码之前修复这些漏洞。这会让您知道该做什么,但这不是好代码。

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