我正在尝试从 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]
我在尝试 printf argv[i]
时收到 EXC_BAD_ACCESS。我也试过将 2 作为 argc 的值传递。
这个应该怎么称呼?谢谢
最佳答案
在这个函数参数列表中,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);
这应该有效。
关于objective-c - 使用字符串数组从 Objective-C 调用 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6719554/