如何检查字符串是否在C中的字符串数组中?

时间:2012-12-03 05:53:58

标签: c arrays

如何用C编写下面的代码?另外:是否有用于检查数组长度的内置函数?

Python代码

x = ['ab', 'bc' , 'cd']
s = 'ab'

if s in x:
  //Code

4 个答案:

答案 0 :(得分:13)

在C中没有用于检查数组长度的函数。但是,如果声明的数组与要检查的数组的范围相同,则可以执行以下操作

int len = sizeof(x)/sizeof(x[0]);

你必须遍历x并对数组x的每个元素执行strcmp,以检查s是否与x的其中一个元素相同。

char * x [] = { "ab", "bc", "cd" };
char * s = "ab";
int len = sizeof(x)/sizeof(x[0]);
int i;

for(i = 0; i < len; ++i)
{
    if(!strcmp(x[i], s))
    {
        // Do your stuff
    }
}

答案 1 :(得分:7)

这样的东西?

#include <stdio.h>
#include <string.h>

int main() {
    char *x[] = {"ab", "bc", "cd", 0};
    char *s = "ab";
    int i = 0;
    while(x[i]) {
        if(strcmp(x[i], s) == 0) {
            printf("Gotcha!\n");
            break;
        }
        i++;
    }
}

答案 2 :(得分:0)

有一个查找字符串长度的函数。来自strlen

string.h

然后您可以使用同一标题中的strcmp来比较字符串,就像其他答案所说的一样。

答案 3 :(得分:0)

Python in方法的可能C实现可能是

#include <string.h>

int in(char **arr, int len, char *target) {
  int i;
  for(i = 0; i < len; i++) {
    if(strncmp(arr[i], target, strlen(target)) == 0) {
      return 1;
    }
  }
  return 0;
}

int main() {
  char *x[3] = { "ab", "bc", "cd" };
  char *s = "ab";

  if(in(x, 3, s)) {
    // code
  }

  return 0;
}

请注意,使用strncmp代替strcmp可以更轻松地比较不同大小的字符串。更多关于他们manpage中的两个。