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

使用字符串数组从Objective-C调用C函数,objective-c,c,string,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; } intc函数

我试图从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;
}
intc函数(intargc,char**argv)
{
int i;
printf(“argc=%d\n”,argc);
对于(i=0;i
我尝试了
cFunction(3,“string1-string2”)
cFunction(3,“string1”、“string2”)
cFunction(3,args)
,其中
args
是由
[textField1-stringValue]
[textField2-stringValue]
组成的NSArray

在尝试
printfargv[I]
时,我获得了EXC\u BAD\u访问权限。我还尝试将2作为argc的值传递


这应该怎么称呼?谢谢

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

使用Objective-C
NSString
NSArray
类型无法使用此函数,首先,使用
-(const char*)cStringUsingEncoding:(NSStringEncoding)编码转换每个字符串,并将它们存储到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);

这应该行。

啊,对不起,我忘了我昨晚试过了。这样做时,我不会获得EXC_BAD_访问权限,但这两个字符串都被分配给argv[0],我正在尝试将它们分配到argv[0]和argv[1]。或者我只需要让cFunction在空白处拆分它们吗?你可以在空白处拆分一个字符串,但是为了给函数传递一个C字符串数组,你需要为数组保留spa ce,并将指向每个C字符串的指针存储到数组中。我通过将textField2附加到textField1来生成参数,中间加一个@“”,我的函数中有“textField1string textField2string”。啊,你是说让我的NSArray保存*cstring而不是[textField stringValue]然后传递NSArray?例如:
char*array[4]={“一”、“二”、“三”、“四”}