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

时间:2011-07-16 19:04:13

标签: 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的值。

应如何调用?感谢

1 个答案:

答案 0 :(得分:3)

在此函数参数列表中,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);

这应该有用。