C 访问字符**来自Swift的结果

C 访问字符**来自Swift的结果,c,arrays,swift,C,Arrays,Swift,在我的Swift代码中,我调用了一个返回char**结果的C方法。我如何强制这样做,以便我有一个[String]要处理?如果你想处理字符**,这意味着你正在处理指向指针的指针。 正如Sourav Ghosh所说,C语言没有正确的字符串数据类型。 您必须声明一个指向character或char*的指针,而不是它。 这意味着您指向的内存地址可以是一个字符1字节或它们的数组 这里有一个例子,你如何处理它 char *myString; myString = &swift(); printf(

在我的Swift代码中,我调用了一个返回char**结果的C方法。我如何强制这样做,以便我有一个[String]要处理?

如果你想处理字符**,这意味着你正在处理指向指针的指针。 正如Sourav Ghosh所说,C语言没有正确的字符串数据类型。 您必须声明一个指向character或char*的指针,而不是它。 这意味着您指向的内存地址可以是一个字符1字节或它们的数组

这里有一个例子,你如何处理它

char *myString;

myString = &swift();
printf("My string is %s", myString);

祝你好运

谢谢你快速的回答;-我设法让它工作起来

let c1 = String.fromCString(row.memory)
let c2 = String.fromCString(row.advancedBy(1).memory)

其中row实际上是我从C获得的char**数组。实际上这是一个MYSQL\u行,因为我想与MYSQL通信。

通常在C中,以null结尾的char*变量可以表示字符串。你能详细一点吗?提示:char**p和*p[i]将char**转换为[String]可能更有意义。但还需要更多的信息。每个字符是否以*0结尾?字符**NULL是否终止?谁分配内存,谁负责释放内存?字符串是常量还是要修改Swift中的字符串?@Martin R:当然是[String]。我已经纠正了这个问题。另请参见我自己的答案。我不知道Swift,但OP的问题是他正在从Swift调用C,并希望将其包含的字符**强制转换为[[String]],这可能是Swift类型。TripeHound是正确的。你搞错了。我搞错了@ThomasKilian,很抱歉错误地认为你有NUL终止的UTF-8字符串。我根本不是MySQL专家,但根据文档,MySQL_行包含指向计数字节数组的指针。这些是否一定是NUL终止的?我通过示例进行了尝试,它确实起了作用。如果我猜MySQL的家伙做得很好,字符串应该是NUL终止的。这就是我所说的健壮编程。