2009-02-26 6 views
7

je veux couler mon NSString en char constante le code est indiqué ci-dessous:jetant un NSString à carboniser problème

NSString *date = @"12/9/2009"; 
char datechar = [date UTF8String] 

NSLog(@"%@",datechar); 

mais il renvoie l'affectation d'avertissement un pointeur en entier sans fonte et ne peut imprimer le charbon correctement, quelqu'un peut me dire quel est le problème

Répondre

27

Essayez quelque chose comme ceci:

NSString* date = @"12/9/2009"; 
char* datechar = [date UTF8String]; 
NSLog(@"%s", datechar); 

Vous devez utiliser char * au lieu de char, et vous devez imprimer des chaînes C en utilisant% s% @ (% @ est pour les types id-c objectif seulement).

+5

UTF8String retourne un const char * –

1

Je voudrais ajouter un * entre l'omble chevalier et datechar (et% s au lieu d'un% @):

NSString *[email protected]"12/9/2009"; char * datechar=[date UTF8String]; 
NSLog(@"%s",datechar); 
6

Je pense que vous voulez utiliser:

const char *datechar = [date UTF8String]; 

(notez le * y)

+1

cela devrait être la réponse – Adamski

2

Votre code a 2 problèmes:

1) "char datechar ..." est un caractère unique, qui ne contiendrait qu'un seul caractère/octet et ne contiendrait pas le tableau entier que vous produisez à partir de votre objet date/string. Par conséquent, votre ligne doit avoir un (*) devant la variable pour stocker plusieurs caractères plutôt que juste un.

2) Après le correctif ci-dessus, vous obtiendrez toujours un avertissement à propos de (char *) vs (const char *), par conséquent, vous devrez "lancer" car techniquement, ils sont les mêmes résultats. Changer la ligne de:

char datechar = [date UTF8String];

dans

char *datechar = (char *)[date UTF8String];

Avis (char *) après le signe =, indique au compilateur que l'expression retournerait un (char *) par opposition à c'est par défaut (const char *).

Je sais que vous avez déjà marqué la réponse plus tôt, cependant, j'ai pensé que je pourrais contribuer à expliquer les problèmes et à résoudre plus en détail.

J'espère que cela aide.

Cordialement Heider

0

Je souffrais depuis longtemps pour convertir NSString à char à utiliser pour cette fonction

-(void)gpSendDTMF:(char) digit callID: (int)cid; 

J'ai essayé toutes les réponses de cette question/beaucoup de choses de recherche Google mais ça n'a pas marché pour moi.

Enfin, j'ai la solution.


Solution:

NSString *digit = @"5"; 

char dtmf; 

char buf[2]; 

sprintf(buf, "%d", [digit integerValue]); 

dtmf = buf[0];