A函數(shù)的源碼可控嗎?如果可控,把對B函數(shù)的調(diào)用改成對新實現(xiàn)的調(diào)用就行了。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的廣漢網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
如果A函數(shù)不是自己寫的(源碼不可控),會麻煩一些。例如,在支持指針的語言上,可以修改B函數(shù)入口部分的匯編代碼,jmp到自己的新實現(xiàn)。要求B函數(shù)和你的實現(xiàn)原型必須完全相同。
#includestdio.h
#includestring.h
#define N 80
void Displaces(char s1[],char s2[],char s3[])
{
char s4[N];
int i=0,j;
while(s1[i]!='\0')
{
if(s1[i]==s2[0])
{
for(j=0;jstrlen(s2);j++)
{
s4[j]=s1[j+i];
}
s4[j]='\0';
if(strcmp(s2,s4)==0)
{
for(j=0;jstrlen(s2);j++,i++)
{
s1[i]=s3[j];
}
}
else
i++;
}
else
i++;
}
}
int main(void)
{
char s1[N],s2[N],s3[N];
gets(s1);
gets(s2);
gets(s3);
Displaces(s1,s2,s3);
puts(s1);
return 0;
}
應(yīng)該是這樣的吧。。。 給分吧!哪不明白可以找我!
char
file[20]="copy
C:\a.txt
c:\b.txt";
system(file);
這是最簡單的辦法。當(dāng)然你也可以寫打開源文件,再打開目標(biāo)文件,讀源文件內(nèi)容,寫目標(biāo)文件....
1、C語言中沒有提供字符串替換函數(shù),網(wǎng)上能找到的類似函數(shù)也只是能替換一個,不能替換全部,工作中卻常常要用到這個功能,故實現(xiàn)一個函數(shù)。該函數(shù)所使用到的相關(guān)函數(shù)均是自己實現(xiàn),沒有調(diào)用庫函數(shù)。
2、函數(shù)代碼如下:
/*descript:replace?str,返回一個替換以后的字符串,用完之后要free()
success:return?1
error:return?0
BUG:"select?*?from?tab?where?id=':a'?and?name?=':aa'",this?is?not?support,this?function?is?just?simple?str_replace?,not?support?all?SQL?language
*/
char?*replacestr(char?*strbuf,?char?*sstr,?char?*dstr)
{???????char?*p,*p1;
int?len;
if?((strbuf?==?NULL)||(sstr?==?NULL)||(dstr?==?NULL))
return?NULL;
p?=?strstr(strbuf,?sstr);???????//返回字符串第一次出現(xiàn)的地址,否則返回NULL
if?(p?==?NULL)??/*not?found*/
return?NULL;
len?=?strlen(strbuf)?+?strlen(dstr)?-?strlen(sstr);
p1?=?malloc(len);
bzero(p1,?len);
strncpy(p1,?strbuf,?p-strbuf);
strcat(p1,?dstr);
p?+=?strlen(sstr);
strcat(p1,?p);
return?p1;
}