我希望用户输入一个字符串,并将输入分配给NSString。当前我的代码如下:
NSString *word;
scanf("%s", &word);
我希望用户输入一个字符串,并将输入分配给NSString。当前我的代码如下:
NSString *word;
scanf("%s", &word);
scanf 函数会读取到一个 C 字符串中(实际上是一组 char 数组),如下所示:
char word[40];
int nChars = scanf("%39s", word); // read up to 39 chars (leave room for NUL)
NSString* word2 = [NSString stringWithBytes:word
length:nChars
encoding:NSUTF8StringEncoding];
然而,scanf只适用于控制台(命令行)程序。如果您正在尝试在Mac或iOS设备上获取输入,则不应使用scanf来获取用户输入。
scanf
不支持任何对象类型。如果您有一个 C 字符串并想从中创建一个 NSString,请使用 -[NSString initWithBytes:length:encoding:]
。
char word[100]
。 - W.K.Sscanf函数不能处理NSString类型的数据,因为scanf只适用于基本数据类型,比如:
该怎么办?
实际上,字符串是由一系列单独的字符构成的。因此,要接受字符串输入,您可以读取这些字符序列并将其转换为字符串。
请使用:
[NSString stringWithCString:cstring encoding:1];
这里是一个可工作的示例:
NSLog(@"What is the first name?");
char cstring[40];
scanf("%s", cstring);
firstName = [NSString stringWithCString:cstring encoding:1];
NSUTF8StringEncoding
作为编码选项,而不是1
,这样理解起来会更加清晰。 - Thomas Fankhauserchar word [40];
scanf("%s",word);
NSString * userInput = [[NSString alloc] initWithCString: word encoding: NSUTF8StringEncoding];
NSLog(@"Enter The Name Of State");
char name[20];
gets(name);
NSLog(@"%s",name);
NSFileHandle *inputFile = [NSFileHandle fileHandleWithStandardInput];
NSData *inputData = [inputFile availableData];
NSString *word = [[NSString alloc]initWithData:inputData encoding:NSUTF8StringEncoding];
简单的解决方案是
char word[40];
scanf("%39s", word);
NSString* word2 = [NSString stringWithUTF8String:word];
scanf
可以使用char*
吗?我不想使用固定的字符数组来限制输入。 - raffian