我正在尝试从用户那里读取NSString
类型的输入,但我找不到NSString
的格式说明符,我知道%i
用于整数变量,但哪一个是NSString
?
结果,我创建了一个char数组,读取了用户的输入,但我无法将其转换为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
答案 0 :(得分:0)
NSString的格式说明符是%@
答案 1 :(得分:0)
这里有一些问题。首先,getchar()
返回一个字符,而不是整个字符串。第二,这一行:
input[29] = getchar();// read the input from the user
只需将input
中的最后一个字符分配给用户输入的字符,这可能根本不是您想要的字符。也许你的意思是gets()
?除非你真的不应该使用它,因为它没有边界检查,你仍然不希望将结果分配给数组中的第30个字符。也许看一下getline()
。
此外,您可能希望指定NSUTF8StringEncoding
。