[英]Pass char array on to a function C++
我的目標是接收一個字符數組,並用“視頻”這個詞替換特定的詞,例如“類”。 但是,buf 數組中的數據來自 web 服務器,其中包含 unicode,所以據我所知,我不允許將 char 數組轉換為字符串,因為它會弄亂其中的大部分數據(我認為)。 所以,我的主要問題是,如何將 buf 作為參數傳遞給 replaceWords function。 現在我收到一條錯誤消息,
錯誤:將“char*”分配給“char [256]”時的類型不兼容
char buf[256];
buf = replaceWords(buf);
char * replaceWords(char* buf) {
char badWord1[] = "class";
char * occurrence = strstr(buf, badWord1);
strncpy(occurrence, "video", 5);
return buf;
}
該錯誤是由buf = replaceWords(buf);
引起的 . 這試圖將 function 返回值 ( char*
) 分配給數組,這不是有效的語法。
您的代碼將數組傳遞給 function 和 function 就地更改字符串。 您不需要 function 的返回值。 實際上,function 可以只定義為返回void
,然后您可以刪除return
語句。
注意:您可能應該添加一些錯誤檢查。 如果沒有找到badWord1
字符串並且strstr()
返回 NULL 會發生什么?
看看這段代碼:
#include <bits/stdc++.h>
using namespace std;
void replaceWords(char buf[]) {
char badWord1[] = "class";
char * occurrence = strstr(buf, badWord1);
strncpy(occurrence, "video", 5);
}
int main() {
char temp[5];
temp[0] = 'c';
temp[1] = 'l';
temp[2] = 'a';
temp[3] = 's';
temp[4] = 's';
replaceWords(temp);
cout << temp << endl;
return 0;
}
它將按您的意願工作。 當您傳遞char buf[]
時,您正在傳遞對要修改的數組的引用。 這樣您就可以在 function 中對其進行修改,並且它將在程序中的其他任何地方進行修改。 不需要做額外的分配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.