定义一个函数replace(),其中包含三个形参:两个是字符型,一个是字符串型。该函数返回一个整数。函数的功能是在字符串中查找第一个字符,如果找到,用第二个字符替换该字符,并将替换的次数作为返回值。编写主函数调用该函数。要求在主函数中动态分配一组空间,将字符串输入该空间。
#include<sdtio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int replace(char *c,char *d,char *q);
char a,b,*p;
int num,i;
p=(char *)malloc(100*sizeof(char));
for(i=0;i<100;i++){
*(p+i)='\0';
}
scanf("%c",&a);
getchar();
scanf("%c",&b);
getchar();
scanf("%s",p);
num=replace(&a,&b,p);
puts(p);
printf("%d",num);
free(p);
return 0;
}
int replace(char *c,char *d,char *q){
int i,num=0;
char change;
for(i=0;*(q+i)!='\0';i++){
if(*(q+i)==*c){
*(q+i)=*d;
num++;
}
}
return num;
}
该题目逻辑并不难,就是注意点较多,特别是输入时,两个字符间输入必须要清除缓冲区,并且字符变量传递给指针形参时应该传递的是地址,而不是变量的值。
C语言小白编写。感谢各位大佬批评指正。