用c语言怎么做字符串替换
时间: 2024-12-23 10:23:26 浏览: 3
C语言实现去除字符串中空格的简单实例
在C语言中,替换字符串通常涉及到两个步骤:查找目标字符串的位置,然后修改该位置之后的字符。C标准库提供的函数`strstr()`用于查找子串,而实际的字符串替换则需要一些额外的工作,因为C语言本身并不直接支持原地字符串替换。这里你可以用循环配合指针来完成这个任务。下面是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
// 功能: 替换str1中的子串old_str为new_str
char* replace_string(char* str1, const char* old_str, const char* new_str) {
size_t old_len = strlen(old_str);
size_t new_len = strlen(new_str);
// 查找旧子串的位置
char* pos = strstr(str1, old_str);
// 如果没有找到,返回原始字符串
if (pos == NULL) {
return str1;
}
// 遍历整个字符串进行替换
while (pos != NULL) {
// 将子串后的部分移到新位置
memmove(pos + new_len, pos + old_len, strlen(pos + old_len) + 1); // +1是因为复制终止符'\0'
// 插入新的子串
memcpy(pos, new_str, new_len); // 复制新子串
// 更新查找位置
pos = strstr(pos + new_len, old_str); // 从新插入点继续查找
}
return str1; // 返回结果,注意这并不是原地替换,而是返回一个新的副本
}
int main() {
char str[] = "Hello, World!";
char old[] = "World";
char new[] = "Universe";
printf("Original string: %s\n", str);
str = replace_string(str, old, new);
printf("Replaced string: %s\n", str);
return 0;
}
```
阅读全文