/ / wie Char-Array in einer Methode übergeben wird

Wie man Char Array in einer Methode übergeben - iphone, objective-c, Methoden, char

Kann mir jemand helfen, Char-Array an die Methode zu übergeben, wenn ich es versucht habe, es nur einen Indexwert zu kopieren

char c1[]={0x01};
char c2[]={0x02};
char c3[]={0x03};
char *c[3];
c[0] = c1;
c[1] = c2;
c[2] = c3;//if i pass this char array to the below method only c[0] is copied
char* arrrr =[self mountLVparams:NULL :c :code_ward_arr];
//my method being this
-(char *)mountLVparams:(signed char *)initData :(char *)obj :(signed char *)codeWard

Antworten:

1 für die Antwort № 1

c ist ein Zeiger auf einen Zeiger. Ihre Methodensignatur sollte wie sein -(char *)mountLVparams:(signed char *)initData :(char **)obj :(signed char *)codeWard

char c1[]={0x01};
char c2[]={0x02};
char c3[]={0x03};
char *c[3];
c[0] = c1;
c[1] = c2;
c[2] = c3;//if i pass this char array to the below method only c[0] is copied
char* arrrr =[self mountLVparams:NULL :c :code_ward_arr];

-(char *)mountLVparams:(signed char *)initData :(char **)obj :(signed char *)codeWard
{
int i;
for(i=0;i<3;++i)
printf("%d----%c", i,*obj[i]);

}

1 für die Antwort № 2

Ich habe eine Lösung, indem Sie Array an Ihre Funktion übergeben und dann char * erstellen.

    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];

Funktion wäre jetzt so, wo uu arr (NSArray) übergeben wird:

-(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 ""
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;
}

Die Gutschrift für die Erstellung von Zeichen aus einem String-Array geht an @yehnan Objektiv-c nsarray zu c-Array

Verwenden Sie so:

  char *cs = [self mountLVparams:(your arguments here and pass array here)];
NSLog(@"%c | %c | %c",cs[0],cs[1],cs[2]);

1 für die Antwort № 3

Vielleicht suchen Sie nach den folgenden Stellen, an denen Sie die Weitergabe durchführen können NSString Objekt mit dem gewünschten Inhalt als Parameter:

NSString *_string = [NSString stringWithString:@"x01x02x03"];
[self yourMethod:_string];

und in der -yourMethod:

- (void)yourMethod:(NSString *)stringWithChars {
char _ch = [stringWithChars characterAtIndex:1]; // it gives back you an unsigned short but in this case you can use this value as char without any problem
NSLog(@"chat at index #1 : %d, %c", _ch, _ch); // or do whatever you"d like to do.
}

0 für die Antwort № 4

Parameter c ist der Zeiger, der auf Ihr Zeichenfeld zeigt. Der Zeiger zeigt auf die erste Adresse des Arrays, also standardmäßig c[0].

Sie können es als NSstring übergeben. [NSString stringWithFormat:%s,c].