[英]Return pointer of start of substring in string with restrictions (C)
所以我知道这真的很简单(或者至少是这么认为),我只是不够熟悉 C 才能看到它。
问题:如果 substring 不是字符串的 substring,则返回给定字符串中第一次出现 substring 或 NULL 的第一个字符的指针。 注意:空的 substring ("") 匹配字符串开头的任何字符串。
入门代码:
char *find_substr(char *string, char* substring) {
return 0;
}
限制:这是我大学 C 作业的未评分(这就是我来这里的原因)复习,因此它有一些非常奇怪的限制:
您不能使用数组索引
你不能使用整数
你不能 #include <string.h> 或其他任何东西
我有什么:基本上什么都没有,我可以想出 100 种不同的方法来不受限制地做到这一点,但我不习惯在代码中使用指针,这真的让我很困惑。
您可以直接使用指针算法执行检查,而不是维护字符串中的索引。 这种方法使用双重嵌套循环,对于字符串中的每个 position,它检查 substring 是否从那里开始。
#include <stddef.h>
#include <stdio.h>
#include <stdbool.h>
bool starts_with(char *str, char *prefix) {
while (*str == *prefix) {
if (*prefix == '\0') {
// an empty string is a prefix of any string
return true;
} else if (*str == '\0') {
// no non-empty strings are prefixes of the empty string
return false;
}
str++;
prefix++;
}
// one string is not a prefix of the other if their first characters are not the same
return false;
}
char *find_substr(char *str, char *sub) {
for (char *p = str; *p; p++) {
if (starts_with(p, sub)) {
return p;
}
}
return NULL;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.