使用字符串数组从Objective-C调用C函数
我试图从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函数
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-CNSString
或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]={“一”、“二”、“三”、“四”}代码>。