在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; } ``` 建议 适用于简单的字符串替换,但需要手动管理内存。 适用于简单的字符串替换,使用标准库函数,不需要手动管理内存。 适用于需要替换多个相同子串的情况,但需要自定义函数。 适用于需要翻转单词的情况,但不适用于替换子串。 根据具体需求选择合适的方法,可以提高代码的效率和可维护性。方法一:
方法二:
方法三:
方法四: