我正在尝试从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的值。
应如何调用?感谢
答案 0 :(得分:3)
在此函数参数列表中,argv
是指向C字符串数组(char **
)的指针。
使用此函数无法使用Objective-C NSString
或NSArray
类型,首先,使用-(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);
这应该有用。