我有两个char
和char search_array[8]
数组,我正在使用input_array[30]
来获取字符,但是我想查找输入中是否存在搜索数组数组而不使用字符串库。
示例:
搜索数组:getchar
输入数组hello
答案 0 :(得分:2)
您需要一些字符串比较循环,例如可以在strcmp
或strcspn
中找到的字符串比较循环。假设您使用的是C字符串之类的终端值;如果您使用一些长度字段,则需要对循环进行调整以清楚地说明这些问题。以下是一些示例:
int strcmp(char const *x, char const *y) {
while (*x && *x == *y) {
x++;
y++;
}
return ((unsigned)*x > (unsigned)*y) - ((unsigned)*x < (unsigned)*y);
}
size_t strcspn(char const *x, char const *y) {
char const *x_ = x;
while (*x_) {
for (char const *y_ = y; *y_; y_++) {
if (*x_ == *y_)
return x_ - x;
}
x_++;
}
return x_ - x;
}
答案 1 :(得分:1)
您的目标显而易见的解决方案是使用标准库的strstr
函数。
由于不允许使用字符串库,因此应编写自己的strstr
版本并使用它。
这是一个简单但合规的实现:
char *my_strstr(const char *s1, const char *s2) {
for (;;) {
for (size_t i = 0;; i++) {
if (s2[i] == '\0')
return (char *)s1;
if (s1[i] != s2[i])
break;
}
if (*s1++ == '\0')
return NULL;
}
}
然后您可以通过以下方式使用此功能:
if (my_strstr(input_array, search_array)) {
printf("string was found\n");
} else {
printf("string was not found\n");
}