如果A函数不是自己写的(源码不可控),会麻烦一些。例如,在支持指针的语言上,可以修改B函数入口部分的汇编代码,jmp到自己的新实现。要求B函数和你的实现原型必须完全相同。
#include <stdio.h>#include <string.h>
#include <malloc.h>
// 将strRes中的t替换为s,替换成功返回1,否则返回0。
int StrReplace(char strRes[],char from[], char to[]) {
int i,flag = 0
char *p,*q,*ts
for(i = 0strRes[i]++i) {
if(strRes[i] == from[0]) {
p = strRes + i
q = from
while(*q &&(*p++ == *q++))
if(*q == '\0') {
ts = (char *)malloc(strlen(strRes) + 1)
strcpy(ts,p)
strRes[i] = '\0'
strcat(strRes,to)
strcat(strRes,ts)
free(ts)
flag = 1
}
}
}
return flag
}
int main() {
char str[80] = "098123asd098opu"
printf("替换前:%s\n",str)
if(StrReplace(str,"098","33210")) printf("替换后:%s\n",str)
else printf("没有任何替换。\n")
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)