|
发表于 2023-12-13 20:44:10
|
显示全部楼层
本楼为最佳答案
 在C语言中,可以使用指针来编写一个字符串替换函数。以下是一个可能的实现:
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char* str_replace(char *target, const char *needle, const char *replacement) {
- char buffer[1024] = { 0 };
- char *insert_point = &buffer[0];
- const char *tmp = target;
- size_t needle_len = strlen(needle);
- size_t repl_len = strlen(replacement);
- while (1) {
- const char *p = strstr(tmp, needle);
- // 如果没有找到需要替换的字符串,就复制剩下的字符串
- if (p == NULL) {
- strcpy(insert_point, tmp);
- break;
- }
- memcpy(insert_point, tmp, p - tmp);
- insert_point += p - tmp;
- memcpy(insert_point, replacement, repl_len);
- insert_point += repl_len;
- tmp = p + needle_len;
- }
- // 结果字符串需要重新分配内存
- char *res = malloc(strlen(buffer) + 1);
- strcpy(res, buffer);
- return res;
- }
- int main() {
- char str[] = "Hello World";
- char *result = str_replace(str, "Hello", "Nihao");
- printf("%s\n", result);
- free(result);
- return 0;
- }
复制代码
这个例子中的`str_replace`函数通过查找目标字符串`needle`在原始字符串`target`中的位置,然后用`replacement`替换它,通过在新的字符缓冲区`buffer`中构造新的字符串来完成替换。然后它返回一个新分配的字符串,该字符串包含替换后的结果。注意这个函数使用了若干标准库的函数,如`strstr`, `strcpy`, `memcpy`,以处理指针和字符串。
这段程序执行后,会将"Hello World"替换为"Nihao World",并将其输出。
需要注意的是,这个实现简单且有点粗糙,并且不处理输入中的特例(例如,输入字符串太长不能存入buffer,或者malloc无法分配内存等)。在实际使用中,你可能需要更健壮的实现,这可能涉及输入验证和错误处理,以及可能的内存管理优化。
求最佳答案 |
|