這是一道替換字串中關鍵字的題。就像word中用一字串替換另外一個文本中包含的字串。
下面代碼中,找到被替換串位置後用了4步進行替換:
1、被替換串起始位置之前的字串複製到臨時字串中;
2、將新字串複製到臨時字串中;
3、將被替換串結束位置後的字串複製到臨時字串中;
4、將臨時字串複製到原字串
#include <stdio.h>#include <string.h>// 該函數實現將字串str1中的str2字串替換為str3bool replace(char str1[], char str2[], char str3[]) { bool flag = true; char *x1 = strstr(str1, str2); if (x1 == NULL) { return false; } int len1 = strlen(str1); int len2 = strlen(str2); int len3 = strlen(str3); int j = 0, i; char tmp[1050]; for (i=0; i<(x1-str1); i++) tmp[j++] = str1[i]; for (i=0; i<len3; i++) tmp[j++] = str3[i]; for (i=(x1-str1+len2); i<len1; i++) tmp[j++] = str1[i]; tmp[j] = '\0'; strcpy(str1, tmp); return true;}int main() { char str[1050]; char a[15][1050], b[15][1050]; int n; while (scanf("%d", &n) && n) { getchar(); for (int i=0; i<n; i++) { gets(a[i]); gets(b[i]); } gets(str); for (int i=0; i<n; i++) { while (replace(str, a[i], b[i])); } printf("%s\n", str); } return 0;}