我最近一直在写一些基本的命令行程序(我想在整个夏天保持我的技能),但是printf我scanf开始烦了。我不是一个出色的 C 程序员,不得不进入printf/scanf和他们的不稳定性(甚至更糟,fgets以及他们的同类)并没有完全让我处于一个令人欣慰的环境中(正是因为这个原因,我喜欢NSLog它的令人欣慰的默认设置命名空间及其自动NSString和NSObject解析)。
然而,令我失望的是,NSLog 没有对应的函数,并且打印了很多额外的“垃圾”(时间、函数名等,以及最后的换行符),这违背了很多目的在我使用它。所以我决定坐下来进行一种不同类型的编程练习并编写函数来替换 printf 和 scanf 以满足我的需求。
瞧,我想出了自己的NSInput.h文件,其中包含两个函数:NSPrint()和NSScan(). 这两个函数在很大程度上模仿了 printf 和 scanf,但也处理了NSString's。我知道我在这里踩到了神圣的名称空间,但我无法抗拒(IFPrint而且IFScan听起来很糟糕!)。
现在,虽然我很高兴我有工作代码(您可以在此处找到源代码),但我知道它效率不高(但令我惊讶的是,它比Xcode 4 中的 LLDB 下的NSPrint效率高几倍,printf但这不是重点)。我需要一些关于如何使功能更好、更高效的建议。NSScan,例如,将va_list它收到的转换为NSPointerArray,并使用NSScanner's 扫描格式和输入字符串,所以我知道还有很大的改进空间。
基本上,我想知道的是,我犯了哪些明显的错误可以而且应该改正?有什么我错过的大事吗?我应该被称为被宠坏并重新使用printfandscanf吗?请告诉我,我在这里寻找输入(双关语不是故意的!)...
提前致谢!