我有一个具有以下结构的 C 库
typedef struct Client_
{
/*! Display Name for Guest only */
char displayName[USERID_SIZE];
/*! Conference PIN if needed */
char pin[PIN_SIZE];
} Client;
在 swift 中,我必须为成员分配字符串。
var client = Client();
let guestVName = "Swift user";
let guestVRoomPin = "";
如何做到这一点?请帮忙。
最佳答案
你可能需要这样写:
strlcpy(&client.displayName.0, guestVName, Int(USERID_SIZE))
strlcpy(&client.pin.0, guestVRoomPin, Int(PIN_SIZE))
在 C 语言中,数组通过指向第一个元素的指针传递,而在 Swift 中,固定大小的 C 数组作为元组导入。因此,您需要模拟 C 编译器的功能。在上面的代码中,您可以将指针传递给元组的第一个元素。
(请记住,strlcpy
不是标准的 C 库函数。它会切断字符串的超出部分,这可能会生成无效的字节序列作为 UTF-8。)
关于ios - Swift 字符串到遗留 C 字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39593238/