【问题标题】:Swift string to legacy C character arraySwift 字符串到传统 C 字符数组
【发布时间】:2016-09-20 11:47:05
【问题描述】:

我有一个具有以下结构的 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 = "";

如何做到这一点?请帮忙。

【问题讨论】:

标签: ios c arrays swift char


【解决方案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 字节序列。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多