我正在尝试从用户那里读取 NSString
类型的输入,但我找不到NSString
的格式说明符,我知道%i
是用于整数变量的,但哪一个用于NSString
?
结果,我创建了一个字符数组,读取了用户的输入,但我无法将其转换为NSString
,XCode 给了我一个输出奇怪的东西,比如ø¿_ÿ
,有时(null)
我使用了许多字符串编码,比如(它们都不起作用):
NSASCIIStringEncoding
NSNEXTSTEPStringEncoding
NSJapaneseEUCStringEncoding
NSUTF8StringEncoding
NSISOLatin1StringEncoding
NSSymbolStringEncoding
NSNonLossyASCIIStringEncoding
NSShiftJISStringEncoding
NSISOLatin2StringEncoding
NSUnicodeStringEncoding
NSWindowsCP1251StringEncoding
NSWindowsCP1252StringEncoding
NSWindowsCP1253StringEncoding
NSWindowsCP1254StringEncoding
NSWindowsCP1250StringEncoding
NSISO2022JPStringEncoding
NSMacOSRomanStringEncoding
NSUTF16StringEncoding
NSUTF16BigEndianStringEncoding
NSUTF16LittleEndianStringEncoding
NSUTF32StringEncoding = 0x8c000100
NSUTF32BigEndianStringEncoding
NSUTF32LittleEndianStringEncoding
NSProprietaryStringEncoding
谁能告诉我为什么?这是我的代码:
//I have declared a class and called it Labtop
Labtop *myLabtop;
myLabtop = [[Labtop alloc] init];
char input[30];
NSLog(@"Hello,please enter which brand you will use this time:n");
input[29] = getchar();// read the input from the user
NSString *b =[[NSString alloc] initWithCString:input encoding:NSISOLatin1StringEncoding];//convert from array char to NSString
[myLabtop labtopBrand:b];//labtopBrand fund will print what the user has entered
结果是:
您好,请输入您这次将使用哪个品牌:
MacBook//这是用户的输入
我将使用 ø¿_ÿ//这是 Xcode 向我显示的输出程序结束 退出代码:0
NSString 的格式说明符是 %@
这里有一些问题。首先,getchar()
返回一个字符,而不是整个字符串。二、这一行:
input[29] = getchar();// read the input from the user
只需将input
中的最后一个字符分配给用户键入的字符,这可能根本不是您想要的。也许你的意思是gets()
?除了你真的不应该使用它,因为它没有边界检查,而且你仍然不想将结果分配给数组中的第三十个字符。也许看看getline()
。
此外,您可能希望指定NSUTF8StringEncoding
。
祝你好运,继续努力!