Swift字符串到传统C字符数组

时间:2016-09-20 11:47:06

标签: ios c arrays swift char

我有一个带有以下结构

的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 = "";

怎么做?请帮忙。

1 个答案:

答案 0 :(得分:1)

你可能需要写这样的东西:

strlcpy(&client.displayName.0, guestVName, Int(USERID_SIZE))
strlcpy(&client.pin.0, guestVRoomPin, Int(PIN_SIZE))

在C语言中,数组通过指针传递给第一个元素,而在Swift中,固定大小的C数组作为元组导入。因此,您需要模拟C编译器的功能。在上面的代码中,您可以将指针传递给元组的第一个元素。

(请记住,strlcpy不是标准C库函数。它会切断字符串的超出部分,这可能会生成无效的字节序列为UTF-8。)