簡體   English   中英

將字符數組傳遞給 function C++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM