重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
成都创新互联于2013年开始,先为宝丰等服务建站,宝丰等地企业,进行企业商务咨询服务。为宝丰企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#define N 80
/* 请在这里填写答案 */
void f(char *c,char a)
{
for(;*c;c++)
if(*c='0'*c='9')
*c=a;
}
int main(void)
{
char c[N], a;
gets(c);
scanf("%c", a);
f(c, a);
printf("%s", c);
return 0;
}
char
*replace(char
*source,
char
*sub,
char
*rep)
{
char
*result;
/*pc1
是复制到结果result扫描指针*/
/*pc2
是扫描
source
辅助指针*/
/*pc3
寻找子串时,为检查变化中source是否和子串相等,是指向sub扫描指针
*/
/*找到匹配后,为了复制到结果串,是指向rep扫描指针*/
char
*pc1,
*pc2,
*pc3;
int
isource,
isub,
irep;
isub
=
strlen(sub);
/*对比串长度*/
irep
=
strlen(rep);
/*替换串长度*/
isource=
strlen(source);
/*源串长度*/
if(NULL==*sub)
return
strdup(source);
/*申请结果串需要空间*/
result
=
(char
*)malloc(((irepisub)?(float)strlen(source)/isub*irep+1:isource)*sizeof(char));
pc1
=
result;
/*为pc1依次复制结果串每个字节作准备*/
while(*source
!=
NULL)
{
/*为检查source和sub是否相等作准备,为pc2,pc3
赋初值*/
pc2
=
source;
pc3
=
sub;
/*
出循环(任)条件是:
*
*pc2
不等于
*pc3
(和子串不相等)
*
pc2
到源串结尾
*
pc3
到源串结尾
(此时,检查了全部子串,source处和sub相等)
*****************************************************/
while(*pc2==*pc3
*pc3
!=
NULL
*pc2
!=
NULL)
pc2++,
pc3;
/*
如果找到了子串,进行以下处理工作*/
if(NULL==*pc3)
{
pc3
=
rep;
/*将替代串追加到结果串*/
while(*pc3
!=
NULL)
*pc1
=
*pc3;
pc2--;
source
=
pc2;
/*
检查
source和sub相等循环结束后
*
pc2
对应位置是在
sub
中串结束符处该是源串中下个位置
*
将
source
指向其前面个
***************************************************/
}
/*如果没找到子串,下面复制source所指字节到结果串*/
*pc1
=
*source;
source;
/*
将source向后移个*/
}
*pc1
=
NULL;
result;
}
A函数的源码可控吗?如果可控,把对B函数的调用改成对新实现的调用就行了。
如果A函数不是自己写的(源码不可控),会麻烦一些。例如,在支持指针的语言上,可以修改B函数入口部分的汇编代码,jmp到自己的新实现。要求B函数和你的实现原型必须完全相同。
char
file[20]="copy
C:\a.txt
c:\b.txt";
system(file);
这是最简单的办法。当然你也可以写打开源文件,再打开目标文件,读源文件内容,写目标文件....