重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这是因为char* b = "……",中。 b是一个常量,不能对它指向的内存区域赋值。
目前创新互联已为上千多家的企业提供了网站建设、域名、网站空间、网站改版维护、企业网站设计、巍山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
类似下面的代码:
char* p = "hello";
p[0] = 'c';
是同样的错误。
#include "stdafx.h"
#include stdio.h
#include string.h
void replaceChar(char *string, char oldChar, char newChar){
int len = strlen(string);
int i;
for (i = 0; i len; i++){
if (string[i] == oldChar){
string[i] = newChar;
}
}
}
int main(){
char str[] = "test";
char oldChar = 't';
char newChar = 'w';
replaceChar(str, oldChar, newChar);
printf("%s\n", str);
return 0;
}
A函数的源码可控吗?如果可控,把对B函数的调用改成对新实现的调用就行了。
如果A函数不是自己写的(源码不可控),会麻烦一些。例如,在支持指针的语言上,可以修改B函数入口部分的汇编代码,jmp到自己的新实现。要求B函数和你的实现原型必须完全相同。