我最近一直在編寫一些基本的命令行程序(我希望在夏天保持我的技能),但printf
和scanf
已經開始困擾着我。我不是一個很棒的C程序員,並且必須進入printf
/scanf
,他們的不穩定性(甚至更糟,fgets
之類)並不完全讓我處於一個令人欣慰的環境中(因爲這個原因,我真的很喜歡NSLog
,與其舒適的默認命名空間及其自動NSString
和NSObject
解析)。我很失望,但是,NSLog沒有對應函數,並在最後打印了大量額外的'垃圾'(時間,函數名等,以及換行符),這會打敗我使用它的目的很多。所以我決定坐下來進行一種不同類型的編程練習,並編寫函數來替換滿足我需求的printf和scanf。Printf/scanf替換方法:一些反饋/建議需要
瞧,我想出了我自己的NSInput.h
文件,其中包含兩個函數:NSPrint()
和NSScan()
。這兩個函數在printf和scanf之後建模很多,但也處理NSString
's。我知道我在這裏踩着神聖的命名空間,但我無法抗拒(IFPrint
和IFScan
聽起來很糟糕!)。
現在,當我真的很高興,我的工作代碼(你可以找到源here),我知道,這不是有效的(出乎我的意料,不過,NSPrint
是幾倍於printf
更有效在Xcode 4的LLDB下,但這不在重點)。我需要一些關於如何使功能更好,更高效的建議。例如,NSScan
將它收到的va_list
轉換爲NSPointerArray
,並使用NSScanner
來掃描格式和輸入字符串,所以我知道還有很大的改進空間。
基本上,我想知道的是,是否有任何明顯的錯誤,我做了可以並應該修復?我錯過了什麼?我應該只是被稱爲寵壞了,並回到使用printf
和scanf
?請告訴我,我在這裏尋找輸入(雙關語不打算!)...
在此先感謝!
它在類似printf的函數中尋找什麼,你無法使用[NSString stringWithFormat:]? – 2010-08-08 21:42:38
我注意到的一個明顯的遺漏是缺少一個測試套件。 – 2010-08-08 21:44:40
@ Seamus:如果你看看源代碼,那就是我所做的。 @Greg:我以前從來沒有做過測試套件,所以我想現在應該是嘗試的好時機,對吧? 感謝您的回覆! – 2010-08-08 22:47:52