char* found(char*dest, char*src) { char* rsrc = src;//遍历原语句 char* gsrc = src;//记录首地址相同的原语句 char* gdest = dest;//回滚目标语句回到初位置 while (*src) { while (*rsrc==*dest&&gdest!='/0') { gsrc++; gdest++; } //回滚 gdest = dest; rsrc++; } if (gdest == '/0') { return gsrc; } else { return NULL; } } int main() { char ch1[] = "hello,world"; char ch2[] = "llo"; char* p = found(ch2, ch1); printf("%s", p); return 0; }
时间: 2024-01-08 14:03:11 浏览: 51
用C++实现strcpy(),返回一个char*类型的深入分析
这段代码的作用是在字符串 `ch1` 中查找字符串 `ch2` 的位置,并返回该位置的指针(即 `gsrc`)。具体实现是通过两个指针 `rsrc` 和 `gsrc` 遍历原字符串 `ch1`,当找到与目标字符串 `ch2` 首字符相同的字符时,记录下此时的两个指针位置 `gsrc` 和 `gdest`,然后继续比较两个指针所指的字符是否相同,直到找到目标字符串 `ch2` 或者原字符串 `ch1` 遍历完毕。如果找到目标字符串,则返回 `gsrc`,否则返回 `NULL`。
代码实现上存在一些问题,比如:
1. 在比较字符时,应该使用 `*gdest` 而不是 `gdest`。
2. 在返回结果时,应该判断 `gdest` 是否为 `'\0'` 而不是 `/0`。
另外,该函数的参数命名不太合理,应该将 `src` 改为 `target` 或者 `ch2`,将 `dest` 改为 `source` 或者 `ch1`,以便更好地理解函数的作用。
阅读全文