在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
中的任何元素。