回答
scanf
不适用于任何对象类型。如果你有一个C字符串并且想从它创建一个NSString,使用-[NSString initWithBytes:length:encoding:]
。
的scanf函数读入一个C字符串(实际上字符数组),就像这样:
char word[40];
int nChars = scanf("%39s", word); // read up to 39 chars (leave room for NUL)
您可以将字符数组转换为NSString的是这样的:
NSString* word2 = [NSString stringWithBytes:word
length:nChars
encoding:NSUTF8StringEncoding];
然而 scanf仅适用于控制台(命令行)程序。如果您尝试在Mac或iOS设备上输入内容,那么scanf不是您想用来获取用户输入的内容。
是的,但是sscanf可以,并且可能是复杂的NSString解析的一个很好的解决方案。
这是我会怎么做它:
char word [40];
scanf("%s",word);
NSString * userInput = [[NSString alloc] initWithCString: word encoding: NSUTF8StringEncoding];
注意:您不需要放置'&'由于单词不是指针,并且是实际的字符数组。 – ManOx 2012-10-30 17:19:24
scanf函数不NSString的工作作为scanf函数不上对象。它仅适用于基本数据类型,如:
- INT
- 浮动
- BOOL
- 焦炭
怎么办?
从技术上说,一个字符串是由一系列单个字符组成的。因此,要接受字符串输入,您可以读取字符序列并将其转换为字符串。
使用:
[NSString stringWithCString:cstring encoding:1];
这里是一个工作示例:
NSLog(@"What is the first name?");
char cstring[40];
scanf("%s", cstring);
firstName = [NSString stringWithCString:cstring encoding:1];
下面是上面代码的说明,通过注释评论:
- 您声明一个变量称为CString的保存40个字符。
- 然后,您通过使用%s格式说明符告诉scanf期望一个字符列表。
- 最后,从被读取的字符的列表中创建一个NSString对象
运行项目。如果你输入一个单词并按回车,程序应该输出你输入的同一个单词。只要确保单词少于40个字符;如果你输入更多,你可能会导致程序崩溃 - 欢迎你自己测试一下!:]
摄影者:RW。
如果你使用'NSUTF8StringEncoding'作为编码选项,而不是'1',可能会更好理解。 – 2014-06-01 14:04:15
如何处理新的线条和空白? – anoop4real 2017-09-30 05:22:47
简单的办法就是
char word[40];
scanf("%39s", word);
NSString* word2 = [NSString stringWithUTF8String:word];
也许这会为你工作,因为它接受字符串的空间为好。
NSLog(@"Enter The Name Of State");
char name[20];
gets(name);
NSLog(@"%s",name);
NSFileHandle类是文件描述符的面向对象的包装器。对于文件,您可以在文件中读取,写入和查找。
NSFileHandle *inputFile = [NSFileHandle fileHandleWithStandardInput];
NSData *inputData = [inputFile availableData];
NSString *word = [[NSString alloc]initWithData:inputData encoding:NSUTF8StringEncoding];
- 1. stringByAddingPercentEscapesUsingEncoding不能与'0'一起使用NSStrings
- 2. 使用Scanf与ObjC和iPhone
- 3. 比较NSStrings与Ä,Ö,Ü
- 4. 使用scanf与x86 GAS组件
- 5. 与scanf函数
- 6. 与scanf函数
- 7. 使用scanf()函数
- 8. 使用scanf函数
- 9. 使用scanf函数
- 10. scanf()与C++枚举
- 11. 使用NSPredicate搜索NSStrings的范围
- 12. 如何在使用while循环scanf后使用scanf!= EOF
- 13. 使用scanf动态分配()
- 14. 使用Scanf的问题?
- 15. 在scanf和printf中使用%
- 16. 使用scanf的错误
- 17. 使用scanf()和指针
- 18. 使用的scanf%P UB
- 19. 使用在scanf符号()
- 20. C:使用scanf的方法
- 21. 如何使用很多NSStrings保持内存使用率低,或者如何释放NSStrings?
- 22. 问题与scanf函数
- 23. 故障与scanf函数(C)
- 24. 如何在控制台应用程序中使用scanf而不使用scanf?
- 25. heightForRowAtIndexPath更长的NSStrings
- 26. 连接三个NSStrings
- 27. 泄漏NSStrings问题
- 28. 运行时异常与输入使用scanf或获取在C
- 29. 如何使用int16_t或int32_t与scanf函数
- 30. 需要帮助了解与scanf结合使用的ungetc行为
如何创建c字符串?你可以编辑我的代码,告诉我如何。 – Omar 2010-07-10 21:10:47
C字符串是一个字符数组,所以你只需写'char word [100]'。 – 2012-09-23 10:17:03