objective-c - 使用字符串数组从 Objective-C 调用 C 函数

标签 objective-c c string

我正在尝试从 Objective-C 调用一个简单的教程 C 函数,但我不知道如何拆分传递的参数,即两个字符串。

int cFunction(int argc, char **argv)
{
    int i;
    printf("argc = %d\n", argc);
    for (i = 0; i < argc; i++) {
        printf("argv[%d] = \"%s\"\n", i, argv[i]);
    }
    return 0;
}

我试过 cFunction(3, "string1 string2")cFunction(3, "string1", "string2")cFunction( 3、args),其中args是由[textField1 stringValue][textField2 stringValue]

组成的NSArray

我在尝试 printf argv[i] 时收到 EXC_BAD_ACCESS。我也试过将 2 作为 argc 的值传递。

这个应该怎么称呼?谢谢

最佳答案

在这个函数参数列表中,argv是一个指向C字符串数组(char **)的指针。

此函数无法使用 Objective-C NSStringNSArray 类型,首先,使用 -(const char *)cStringUsingEncoding 转换每个字符串:(NSStringEncoding)encoding;,并将它们存储到一个C字符串数组中。

// myString is "arg1"
// mySecondString is "arg2"
char *cString = [myString
                 cStringUsingEncoding:NSUTF8StringEncoding];
char *cSecondString = [mySecondString
                       cStringUsingEncoding:NSUTF8StringEncoding];
char *myStrings[2] = { cString, cSecondString };
int returnCode = cFunction(2, myStrings);

这应该有效。

关于objective-c - 使用字符串数组从 Objective-C 调用 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6719554/

相关文章:

ios - 为什么我现在每次启动应用程序时都会收到 "Auto Layout still required after executing -layoutSubviews"错误?

c - 编码文本和文件写入读取错误

ios - 设备与模拟器语言方案

c - 下面的C程序中_AX = 1000是什么意思?

c - 从 fscanf 接收到奇怪的数字 - int 转换?

将全局数组复制到另一个全局数组

c++ - 获取字符串 C++

C++函数将字符串拆分为单词

iphone - 如何在 GCD 中终止/暂停/关闭异步 block ?

ios - IOS Native 中的 Worklight Adapter 调用传递 JSON 参数