替换问题~~~
下列给定程序中,函数fun的功能是:将s所指字符串中出现的t1所指子串全部替换成t2所指子字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。例如,当s所指字符串中的内容为abcdabfab,t1所指子串中的内容为ab,t2所指子串中内容为99时,结果,在w所指的数组中的内容应为99cd99f99。#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t1,char*t2,char*w){inti;char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=t1;while(*r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\0'){a=w;r=t2;while(*r){*a=*r;a++;r++;}w+=strlen(t2);}elsew++;}}main(){chars[100],t1[100],t2[100],w[100];clrscr();printf("\nPleaseenterstrings:");scanf("%s",s);printf("\nPleaseentersubstringt1:");scanf("%s",t1);printf("\nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("\nTheresultis:%s\n",w);}elseprintf(" (t1)!=strlen(t2)\n");}加粗的部分没有理解
网页上没有显示有加粗的部分,我将其拷贝到了我的VC环境中,添加了一些注释,可能有助于你的理解,我想你还可以通过设置断点进行调试,这样可以加深理解。下面是我加了注释的文件#include#include#includevoidfun(char*s,char*t1,char*t2,char*w){inti;char*p,*r,*a;//声明临时指针变量strcpy(w,s);//将初始字符串s的内容拷贝至字符串w中while(*w)//对字符串w的内容进行循环操作,对应最末尾的w++{p=w;r=t1;//对临时变量p,r赋值while(*r)//对字符串r进行循环,找出与字符串w相同的字符if(*r==*p)//如果找到就继续循环,使r,p(相当于w)均自增,否则就跳出循环{r++;p++;}elsebreak;if(*r=='\0')//当r的内容不再等于p中相应位置的值时,判断r(即要替换的字符串t1){//是否自增到了结尾,若不是,则令w继续自增a=w;//若是,就把w值赋给另一变量ar=t2;//令r等于要替换的字符串while(*r)//循环完成替换操作{*a=*r;//对字符串a(相当于w)和r对应位置的值进行替换a++;r++;}w+=strlen(t2);//交换完后,将w后移t2字符串的长度单位开始继续查找。
比如说,}elsew++;}}main(){chars[100],t1[100],t2[100],w[100];//clrscr();printf("\nPleaseenterstrings:");scanf("%s",s);printf("\nPleaseentersubstringt1:");scanf("%s",t1);printf("\nPleaseentersubstringt2:");scanf("%s",t2);if(strlen(t1)==strlen(t2)){fun(s,t1,t2,w);printf("\nTheresultis:%s\n",w);}elseprintf(" (t1)!=strlen(t2)\n");}。
答:一、 1.B 2.C 3.D 4.A 5.D 6.C 7.A 8.A 9.A 10.A 11. 12. 13. 14.D 15.C 16.A 17.C 18.D...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>