lynjay 2020-06-14
函数fun将字符串s中第一次出现的子字符串t1替换成字符串t2,替换后的新串放在w所指的数组中,
要求t1和t2所指向的字符串长度相同。
例如:当s所指字符串中的内容为"abcdab",t1中的内容为"ab",t2中的内容为"cc"时,结果w所指
数组中的内容应为"cccdab"。
程序有多处错误,请在答题框中写出错误的行号和修改后的内容。
1 int fun(char *s, char *t1, char *t2 , char *w)
2 {
3 int i;
4 char *p , *r, *a;
5 strcpy( w, s );
6 while ( *w )
7 {
8 p = w;
9 r = t1;
10 while ( *r )
11 if ( *r == *p )
12 {
13 r++;
14 p++;
15 }
16 else
17 break;
18 if ( *r )
19 {
20 a = w;
21 continue;
22 }
23 w++;
24 }
25 r = t2;
26 while ( *r )
27 {
28 *a = *r;
29 a++;
30 r++;
31 }
32 } #include <stdio.h>
#include <string.h>
void fun(char *s, char *t1, char *t2 , char *w)
{
int i;
char *p, *r, *a;
strcpy(w, s);
while(*w)
{
p = w;
r = t1;
while(*r){
if ( *r == *p ){
r++;
p++;
}
else
break; //2
}
if (*r == ‘\0‘) //3
{
a = w;
break;
}
w++;
}
r = t2;
// printf("%c\n", *a);
while ( *r )
{
*a = *r; //1
a++;
r++;
}
}
main(){
char s[50] = "abcdab";
char t1[50] = "ab";
char t2[50] = "cc";
char w[50];
// char *s = "abcdab";
// char *t1 = "ab";
// char *t2 = "cc";
// char *w;
fun(s, t1, t2, w);
printf("%s", w);
return 0;
}