這是因?yàn)閏har* b = "……",中。 b是一個(gè)常量,不能對(duì)它指向的內(nèi)存區(qū)域賦值。
目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、巍山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
類似下面的代碼:
char*?p?=?"hello";
p[0]?=?'c';
是同樣的錯(cuò)誤。
#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函數(shù)的源碼可控嗎?如果可控,把對(duì)B函數(shù)的調(diào)用改成對(duì)新實(shí)現(xiàn)的調(diào)用就行了。
如果A函數(shù)不是自己寫的(源碼不可控),會(huì)麻煩一些。例如,在支持指針的語(yǔ)言上,可以修改B函數(shù)入口部分的匯編代碼,jmp到自己的新實(shí)現(xiàn)。要求B函數(shù)和你的實(shí)現(xiàn)原型必須完全相同。