|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
【问题描述】
将字符串str中的子字符串s1替换成新的子字符串s2(字符串长度<100),如果字符串str中有多个s1,则应全部替换,最后输出被替换后的str字符串。
【输入形式】
输入3行,第一行是:字符串,第二行是:被替换子串,第三行是:替换子串
【输出形式】
替换后的字符串
【样例输入1】
hello word!
word
C program
【样例输出1】
hello C program!
【样例输入2】
hello word!
o
w
【样例输出2】
hellw wwrd!
字符串 s1 中的多个子字符串 s2 全部替换成 s3:- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char* replace(const char* str, const char* old, const char* new)
- {
- char* result;
- int i, count = 0;
- int n = strlen(new);
- int m = strlen(old);
- for (i = 0; str[i] != '\0'; i++) {
- if (strstr(&str[i], old) == &str[i]) {
- count++;
- i += m - 1;
- }
- }
- result = (char*)malloc(i + count * (n - m) + 1);
- i = 0;
- while (*str) {
- if (strstr(str, old) == str) {
- strcpy(&result[i], new);
- i += n;
- str += m;
- }
- else result[i++] = *str++;
- }
- result[i] = '\0';
- return result;
- }
- int main()
- {
- char str[100], old[100], new[100];
- scanf("%[^\n]", str);
- getchar();
- scanf("%[^\n]", old);
- getchar();
- scanf("%[^\n]", new);
- getchar();
- char* result = NULL;
- result = replace(str, old, new);
- printf("%s", result);
- free(result);
- return 0;
- }
复制代码
|
|