Я недавно писал некоторые базовые программы для командной строки (я хочу, чтобы мои навыки оставались резкими в течение лета), но printf
и scanf
начали меня раздражать.Я не замечательный программист на Си, и необходимость в printf
/ scanf
и их нестабильности (или, что еще хуже, fgets
и т. Д.) Не совсем утешает меня (по этой причинеточно, я люблю NSLog
, с его комфортным пространством имен по умолчанию и его автоматическим синтаксическим анализом NSString
и NSObject
).
К моему большому разочарованию, NSLog не имеет функции-аналога и печатаетмного лишнего «мусора» (время, имя функции и т. д., а также символ новой строки в конце), что лишает меня смысла в его использовании.Поэтому я решил сесть за другое упражнение по программированию и написать функции для замены printf и scanf, которые бы соответствовали моим потребностям.
И вуаля, я придумал свой собственный файл NSInput.h
, содержащий две функции: NSPrint()
и NSScan()
.Эти две функции моделируются значительно после printf и scanf, но также обрабатывают NSString
.Я знаю, что я наступаю на священное пространство имен здесь, но я не смог устоять (IFPrint
и IFScan
просто звучат ужасно!).
Теперь, хотя я действительно счастлив, что у меня есть рабочий код(для которого вы можете найти источник здесь ), я знаю, что это неэффективно (хотя, к моему удивлению, NSPrint
в несколько раз эффективнее, чем printf
в LLDB в Xcode 4, ноэто не относится к делу).Мне нужен совет о том, как сделать функции лучше и эффективнее.NSScan
, например, преобразует va_list
, который он получает, в NSPointerArray
и использует NSScanner
для сканирования формата и ввода строк, поэтому я знаю, что есть много возможностей для улучшения.
По сути, я хочу знать, есть ли какие-то явные ошибки, которые я допустил, которые можно и нужно исправить?Есть что-то огромное, что я пропустил?Должен ли я просто позвонить избалованным и вернуться к использованию printf
и scanf
?Пожалуйста, скажите мне, я ищу ввод здесь (каламбур не предназначен!) ...
Заранее спасибо!