2009-02-26 40 views
7

我想鑄造我的NSString恆定焦炭 的代碼如下所示:鑄造的NSString燒焦問題

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

NSLog(@"%@",datechar); 

但它返回警告 賦值時將指針整數,未鑄造 ,不能正確打印字符,可有人告訴我這是什麼問題

回答

27

嘗試更多的東西是這樣的:

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

您需要使用的char *代替字符,你必須用%來打印C字符串不是%@(%@僅用於Objective-C的ID類型)。

+5

UTF8字符串返回一個const char * – 2012-06-05 14:51:56

1

我想補充(和%個%@代替)char和datechar之間的*:

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

我想你想使用:

const char *datechar = [date UTF8String]; 

(注意在那裏*)

+1

這應該是答案 – Adamski 2015-09-18 23:19:40

2

你的代碼有2個問題:

1) 「字符datechar ......」 是單字符,它只能保存一個字符/字節,並且不會保存從日期/字符串對象生成的整個數組。因此,你的行應該在變量前面有一個(*)來存儲多個字符,而不僅僅是一個。 2)在上述修復之後,你仍然會得到關於(char *)vs(const char *)的警告,因此,你需要「投射」,因爲它們在技術上是相同的結果。改變的行:

char datechar = [date UTF8String];

進入=符號後

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

通知(字符*),講述而非該表達式將返回(字符*)編譯器它是默認的(const char *)。

我知道你已經在早些時候標記了答案,但我認爲我可以貢獻來解釋問題以及如何解決更多細節。

我希望這會有所幫助。

親切的問候 海德

0

我很痛苦很長一段時間來NSString轉換爲char使用此功能

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

我試圖從谷歌搜索的這個問題/很多事情每一個答案但它不適合我。

最後我得到了解決方案。


解決方案:

NSString *digit = @"5"; 

char dtmf; 

char buf[2]; 

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

dtmf = buf[0];