我有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]);
}
}
答案 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");