2011-11-23 36 views
7

我想要一個來自用戶的輸入他們的名字和輸出在NSLog使用NSString輸入名稱。 我不知道哪個%符號以及如何輸出。 我可以使用scanf()函數嗎? 請幫助我,我只是Objective-C的初學者。如何在Objective-C的NSLog函數中輸出NSString類型?

+0

見[字符串格式說明](http://developer.apple.com/library/IOs/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html)。 – Anna

回答

23

您可以對所有對象(包括NSString)使用%@。這將依次調用對象description方法並打印適當的字符串。大多數對象都有一個相當有用的表示(例如,NSArray對象返回其所有內容的描述)。

+0

這樣?的NSLog( 「%@」,名); ? –

+5

是的,'NSLog(「%@」,name); '會工作。 – progrmr

1

%@是你想要的。它適合的物體,像NSString[YourViewController class]

1

NSLog接受格式字符串,所以你可以做這樣的事情:

#include <stdio.h> 
#include <Foundation/Foundation.h> 

// 1024 characters should be enough for a name. 
// If you want something more flexible, you can use GNU readline: 
// <http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html> 
#define MAX_NAME_LENGTH 1024 

// Get name from user input 
char name[MAX_NAME_LENGTH]; 
name[0] = '\0'; // just in case fgets fails 
fgets(name, MAX_NAME_LENGTH, stdin); 

// Put name into NSString object and output it. 
NSString *name = [NSString stringWithUTF8String:name]; 
NSLog(@"%@", name); 

%@適用於所有的Objective-C對象。 如果要輸出C字符串(char*const char*),請使用%s。切勿將非文字字符串作爲NSLog的第一個參數,因爲這會打開安全漏洞。

+0

呵呵!我只想從用戶輸入中獲取NSString。不是字符和輸出NSString.and也不想轉換成NSString.Can我喜歡那樣。我只是初學者。請解釋我。 :) –

+0

你不能直接從標準輸入獲取NSString(假設你需要)。如果你願意,你可以使用'NSFileHandle'和'NSData'來完成,但是直接使用'NSString'是不可能的。有關示例,請參閱http://caiustheory.com/read-standard-input-using-objective-c。 – 2011-11-23 14:52:54

+0

啊!我知道 。所以我們不能直接獲得String輸入。在C#.Net中,我們可以輕鬆使用Console.ReadLine(); 。但在OBJC。我們無法得到。 :(感謝您的回答。 –

0

要獲得來自用戶的輸入,請使用UITextFieldNSTextField。要輸出字符串到日誌文件,你可以使用的NSLog,即:

NSString* userName = @"Zawmin"; 

NSLog(@"name = %@", userName); 
+0

或者NSTextField如果使用Cocoa。 – 2011-11-23 14:33:51

+0

現在我正在使用用戶的控制檯輸入。我該怎麼做? –

+0

@Zawmin查看我的答案。它使用fgets從用戶的C字符串中獲取輸入,然後使用NSLog將其轉換爲NSString輸出。 – 2011-11-23 14:38:48

3

馬克·迪倫是將存儲在名稱變量的名稱。

NSString* Name = @"Mark Dylan"; 

該代碼將允許您詢問他們的姓名並將其掃描到存儲在Name變量中的內存中。

NSLog("What is your name?"); 
scanf("%@", &Name); 

如果你想打印出來,你可以使用變量;在文檔中

NSLog("Your name is %@", Name);