我需要一個scanf結果並將它變成一個NSString,然後將NSString轉換爲Pea類的實例pea1的一個屬性。 如果我可以在scanf上加上某種限制,這也會很好,所以用戶不會放太多字符並停止程序,但這不是絕對必要的。如何將scanf結果轉換爲NSString,然後轉換爲類的屬性?
我花了我所有的空閒時間(六個小時)試圖通過互聯網找到這個,但它不工作。將scanf轉換爲NSString或NSString成爲類實例的屬性有很多結果,但是我找不到它們並將它們組合起來不起作用。
我需要這個,以便用戶可以通過scanf命名豌豆,然後讓豌豆的名字被顯示出來。
這裏是我的代碼,一切並不影響取出這個問題:
#import <Foundation/Foundation.h>
@interface Pea: NSObject
@property (retain) NSString *name;
@end
@implementation Pea
@synthesize name;
@end
int main (int agrc, char * argv[])
{
@autoreleasepool {
Pea *pea1 = [[Pea alloc] init];
char word;
//Asks for name of Pea
NSLog(@"What would you like to name this pea?");
scanf("%s", &word);
NSString* userInput = [[NSString alloc] initWithUTF8String: &word];
[pea1 setName: userInput];
//NSLogs data
NSLog (@"Your pea plant, %@\n.", [pea1 name]);
}
return 0;
}
謝謝你這麼多,你可能有任何幫助! :D
謝謝,這幫了我很多;另外,對於任何有這個問題的人,我在執行時遇到了一個錯誤,導致程序停止運行(線程斷點是fgets行)。但是,不是'size_t size = 100; char word [size];'我用了'char [100];'這個工作。此外,請執行'fgets(word,100,stdin)'而不是fgets line @Ramy建議。但非常感謝你! –
'scanf'也可以限制字符的數量,例如, 'scanf(「%99s」,&word);' – newacct
'我不喜歡它,因爲它可能會使標準輸入緩衝區變髒 –