ios - Swift 字符串到遗留 C 字符数组

标签 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 = "";

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

最佳答案

你可能需要这样写:

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/

相关文章:

android - Titanium Appcelerator 可以用于 Windows 机器中的 IOS 应用程序开发吗

html - 无法删除在 flutter iOS 中使用 html/css 创建的 pdf 的页面外边距

ios - Xcode Swift sprite-kit SKS 文件动画在 SKS 文件中正常工作,但在模拟器或 iPhone 上不起作用

C 中字符串中特定字母的大写

python - 在 For 循环中从 Windows 批处理文件中的数组访问项目

ios - 覆盖ios后退按钮

c - GCC 和相同类型数组之间的严格别名

c - 在外部设备上使用 gethostbyname() 函数

python - 无法将类型 'myFuncDef *' 分配给 'void (*)(double *, double *)'

c++ - 仅比较两个不同数组的第一个元素