c替换字符串中单词怎么编程

时间:2025-01-28 20:10:56 网络游戏

在C语言中,替换字符串中的单词可以通过以下几种方法实现:

方法一:使用`strstr`和`strcpy`

```c

include

include

int main() {

char str;

char *str1 = NULL;

char *str2 = NULL;

char strtemp;

char str3;

puts("请输入初始字符串:");

gets(str);

puts("请输入要被替换掉的字符串:");

gets(strtemp);

puts("请输入要去替换的字符串:");

gets(str3);

if(strstr(str, strtemp) == NULL) {

printf("没有字符串%s\n", strtemp);

return 1;

}

str1 = (char*)malloc(strlen(strstr(str, strtemp)) + 1);

strcpy(str1, strstr(str, strtemp));

str2 = strstr(str, strtemp);

*str2 = '\0';

strcat(str, str3);

strcat(str, str1 + strlen(strtemp));

puts(str);

return 0;

}

```

方法二:使用`sscanf`和`sprintf`

```c

include

include

int main() {

char str;

char strtemp;

char str3;

scanf("%s %s %s", str, strtemp, str3);

char *pos = strstr(str, strtemp);

if (pos == NULL) {

printf("没有字符串%s\n", strtemp);

return 1;

}

sprintf(pos, "%s", str3);

printf("%s\n", str);

return 0;

}

```

方法三:使用`str_replace`函数(需要自定义)

```c

include

include

void str_replace(char *str, const char *old, const char *new) {

char *p = strstr(str, old);

if (p != NULL) {

size_t len = p - str;

strncpy(p, new, len);

p += strlen(new);

strcpy(p, p + strlen(old));

}

}

int main() {

char buf = "xxxxabcyyyy";

str_replace(buf, "abc", "cba");

printf("buf=%s\n", buf);

return 0;

}

```

方法四:使用`reverseWords`函数翻转单词

```c

include

include

void reverseWords(char *s) {

char temp;

int i = 0, j = strlen(s) - 1;

while (i < j) {

temp = s[i];

s[i] = s[j];

s[j] = temp;

i++;

j--;

}

}

int main() {

char s[] = "Let's pass the examination";

reverseWords(s);

printf("%s\n", s);

return 0;

}

```

建议

方法一:

适用于简单的字符串替换,但需要手动管理内存。

方法二:

适用于简单的字符串替换,使用标准库函数,不需要手动管理内存。

方法三:

适用于需要替换多个相同子串的情况,但需要自定义函数。

方法四:

适用于需要翻转单词的情况,但不适用于替换子串。

根据具体需求选择合适的方法,可以提高代码的效率和可维护性。