関数に配列を渡してからchar*を作成することで、1つの解決策があります。
const char c1[]={0x01};
NSString *s1 = [[NSString alloc] initWithCString:c1 encoding:NSUTF8StringEncoding]; //convert into string
const char c2[]={0x02};
NSString *s2 = [[NSString alloc] initWithCString:c2 encoding:NSUTF8StringEncoding]; //convert into string
const char c3[]={0x03};
NSString *s3 = [[NSString alloc] initWithCString:c3 encoding:NSUTF8StringEncoding]; //convert into string
NSArray *arr = [NSArray arrayWithObjects:s1,s2,s3,nil]; // adding all strings
[s1 release];
[s2 release];
[s3 release];
これで、関数は次のようになります。ここで、uはarr(NSArray)を渡します。
-(char *)mountLVparams:(signed char *)initData :(NSArray *)arrChars :(signed char *)codeWard
{
int count = [arrChars count];
char *cargs = (char *) malloc(sizeof(char) * (count + 1));
//cargs is a pointer to 4 pointers to char
int i;
for(i = 0; i < count; i++) {
NSString *s = [arrChars objectAtIndex:i];//get a NSString
const char *cstr = [s cStringUsingEncoding:NSUTF8StringEncoding];//get cstring
int len = strlen(cstr);//get its length
char *cstr_copy = (char *) malloc(sizeof(char) * (len + 1));//allocate memory, + 1 for ending '\0'
strcpy(cstr_copy, cstr);//make a copy
cargs[i] = cstr_copy;//put the point in cargs
}
cargs[i] = NULL;
NSLog(@"%c | %c| %c ",cargs[0],cargs[1],cargs[2]);
return cargs;
}
文字列の配列からcharを作成するためのクレジットは、@yehnanに行きます 。Objective-cnsarrayからcarrayをフォローします。
このように使用します:
char *cs = [self mountLVparams:(your arguments here and pass array here)];
NSLog(@"%c | %c | %c",cs[0],cs[1],cs[2]);