比较2个数组中的值

时间:2015-10-24 15:31:57

标签: c arrays

我有2个数组。一个是字母列表,而另一个是用户输入的。我正在尝试编写一个函数来比较这两个数组以查看键盘是否匹配,例如,如果用户输入BOB,程序将BOB存储在一个数组中,并将BOB与另一个数组进行比较,并检查BOB是否在其中。

char bigarray []= "asdlkfjas;ldkfjas;kldf";

printf("Please enter the number of letters: ");
scanf("%d",&dna);

printf("Enter %d characters ", num);

for (int i = 0; i < dna; i++)
{
     scanf(" %c", &input[i]); 
     searchFunc ();
}

一旦我获得了字符的用户输入,我扫描字符并将其存储在一个数组中。现在,我的searchFunc函数将比较2个数组并查看是否匹配并返回其找到的位置的索引值。我不确定如何编写这个函数来比较值和我必须传递的参数。

我相信我需要编写一个嵌套的for循环来遍历两个数组,但不完全确定如何去做。

for (int i = 0; i < bigarray []; i++) {
  for (int j = 0; j < dna; j++) {
  if (bigarray [i] == dna [i])
      printf("found at %d", bigarray[i]);
  }
}

1 个答案:

答案 0 :(得分:0)

嵌套循环有效,但标准库提供strchr(),简化了几乎正确的代码。

  

strchr函数定位s指向的字符串中第一次出现的c(转换为char)。 C11dr§7.24.5.22

根据参考字符串搜索用户输入的每个字母。

int Compare(const char *ref, const char *user_data, int user_data_length) {
  for (int i=0; i<user_data_length; i++) {
    if (strchr(ref, user_data[i]) == NULL) return 0;  // at least 1 missing
  }
  return 1; // all found
}

....
printf("All there? %s\n", Compare(bigarray, input, dna) ? "Yes" : "No");