Кодирование инструмента командной строки в Objective-C, который принимает входные данные, очищает экран и затем выводит - PullRequest
4 голосов
/ 17 января 2012

Я надеюсь, я не буду просить слишком много здесь.

Я хотел бы создать инструмент командной строки, который будет запускаться в окне терминала.Он будет принимать ввод с терминала, что-то делать со строкой, очищать экран и затем выводить строки.

#import <Foundation/Foundation.h>
#include <stdlib.h>

int main (int argc, const char *argv[])
{    
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSLog (@"Running....");

       // take the argument as an NSString
       // do something with the NSString. 
       // clear the terminal screen.
       // output the manipulated screen. 

    [pool drain];
    return 0;

}

Возможно ли это?Какие-нибудь советы?Я хотел бы как можно больше кодировать это в Objective-C.

Спасибо,

РЕДАКТИРОВАТЬ 1 *

Просто чтобы было ясно, я хотел бы постоянно вводить и выводить из программы.Другими словами, необходимо будет вводить данные после запуска исполняемого файла.Не только когда он изначально выполняется.

1 Ответ

4 голосов
/ 17 января 2012

Это возможно.Используйте шаблон "Инструмент командной строки" в XCode при создании вашего проекта.

Быстрый пример может быть:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    @autoreleasepool {
        char input[50];
        while (true) {
            // take the argument as an NSString
            NSLog(@"Enter some text please: ");
            fgets(input, sizeof input, stdin);
            NSString *argument = [[NSString stringWithCString:input encoding:NSUTF8StringEncoding] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

            // do something with the NSString.
            NSString *uppercase = [argument uppercaseString];

            // clear the terminal screen.
            system("clear");

            // output the manipulated screen.
            NSLog(@"Hello, %@!", uppercase);
        }
    }
    return 0;
}
...