第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

cgo - 如何將字符串轉(zhuǎn)換為 C 固定字符數(shù)組

cgo - 如何將字符串轉(zhuǎn)換為 C 固定字符數(shù)組

Go
縹緲止盈 2021-08-10 15:30:23
我試圖在我的 Go 代碼中實(shí)例化一個(gè) C 結(jié)構(gòu)。結(jié)構(gòu)體是這樣定義的(在我無法修改的外部庫中):typedef struct {    char field1[256];} S1在go中,我這樣做了:func myfunc(mystr string){    // We need to convert mystr from string to char array    cStr := C.CString(mystr)    defer C.free(unsafe.Pointer(cStr)    // Should work now    s1 := &C.S1{field1: cStr}    // Do something with s1...}但它不能編譯,因?yàn)椋翰荒茉谧侄沃抵惺褂?cStr(類型 *C.char)作為類型 [256]C.char我試過強(qiáng)制 ([256]C.char)(cStr) 但它顯然也不起作用。有沒有辦法實(shí)現(xiàn)我想要做的事情?
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

最簡單的解決方案是將結(jié)構(gòu)的字段定義更改為字符指針,這對于 C 中的字符串來說是非常標(biāo)準(zhǔn)的:


typedef struct {

    char *field1;

} S1

更復(fù)雜的解決方案是[1]:


arr := [256]C.char{}


for i := 0; i < len(mystr) && i < 255; i++ { // leave element 256 at zero

    arr[i] = C.char(mystr[i])

}


s1 := &C.S1{field1: arr}

[1]代碼未經(jīng)測試,無法在此工作站上編譯。


查看完整回答
反對 回復(fù) 2021-08-10
  • 2 回答
  • 0 關(guān)注
  • 342 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號