2009-03-17 23 views
1

J'ai une fonction C avec la signature de méthode suivante. Comment appeler cette fonction, transmettre une chaîne et enregistrer la chaîne renvoyée?appelant une fonction C en utilisant du cacao

J'ai essayé ce qui suit, mais il ne fonctionne pas:

NSString *temp= [[NSString alloc]initWithString:md5(password)]; 

merci pour votre aide

+0

Ce code semble correct, en supposant que le mot de passe est une variable NSString. Vous allez devoir fournir plus de détails. Comment est-ce que ça n'a pas marché? D'où vient le mot de passe? – Chuck

+0

Peut aider à indiquer ce qui n'a pas fonctionné exactement. Le compilateur a-t-il donné une erreur? Quelle était l'erreur? Que se passe-t-il si vous essayez NSString * a = md5 (mot de passe); NSString * temp = [[NSString alloc] initWithString: a]; – Dave

Répondre

4

Tu fais trop dur. Les choses dans [] est effectivement smalltalk. Ce que vous voulez est d'appeler simplement la fonction en C:

NSString * temp = md5(password); 
+0

temp = [md5 (mot de passe) copy] ou [md5 (mot de passe) retain] peut être nécessaire si – cobbal

+0

Il est vrai qu'ils le rendent trop difficile, mais leur code devrait fonctionner, comme le suggèrent les commentaires sur la question. La question est mauvaise et nécessite plus de détails. – danielpunkass

+0

ouais, mais "rendre trop difficile" est généralement un signe qu'ils ne comprennent pas ce qu'ils essaient de faire. Accepter plus de détails pourraient aider. –

0

Qu'est-ce qu'un mot de passe? Le mot de passe est-il un pointeur commun "char *"? La signature md5 est-elle correcte?

Si tel est le cas, vous pouvez:

NSString *temp = [[NSString alloc] initWithCString:password encoding:NSASCIIStringEncoding]; 

Si votre signature md5 est: char * md5 (char * mot de passe), et vous avez-vous un mot de passe stockés dans un NSString, vous pouvez:

NSString password = @"mypass"; 
char buff[128]; 
NSString *temp = [[NSString alloc] initWithString:password]; 
[temp getCString:buff maxLength:128 encoding:NSASCIIStringEncoding]; 
char *md5 = md5(buff); 
// then you could do whatever you want with md5 var 
Questions connexes