C语言关于函数的替换

C语言关于函数的替换,第1张

A函数的源码可控吗?如果可控,把对B函数的调用改成对新实现的调用就行了。

如果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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11310857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存