我有一个命令行C game的源代码,它等待用户的stdin并输出stdout。我想从文本字段到此main代码的C提供输入,并以文本区域字段中的输出为例。

int mainer(int argc, char **argv) {
    int i;
    int hitme;
    char ch;
    prelim();

    if (argc > 1) { // look for -f option
        if (strcmp(argv[1], "-f")== 0) {
            coordfixed = 1;
            argc--;
            argv++;
        }
    }


    if (argc > 1) {
        fromcommandline = 1;
        line[0] = '\0';
        while (--argc > 0) {
            strcat(line, *(++argv));
            strcat(line, " ");
        }
    }
    else fromcommandline = 0;
 // some other code

}

从示例here,我应该执行以下操作:
let args = [" ", "regular", "short", ""]

var cargs = args.map { strdup($0) }
let result = mainer(Int32(args.count), &cargs)
for ptr in cargs { free(ptr) }

我如何才能调用main function,并使其保持 Activity 状态并继续提供参数以使其充当command line

最佳答案

我将使用TextArea和TextField设置您的应用程序,并提供printf和scanf的替代方法,这些替代方法可以将文本添加到文本区域或从文本字段获取发送的文本(也许使用“Enter” UIButton)。然后,您可以编译C代码并从Swift调用它。目标C实际上是C的内幕,因此您只需稍作改动就可以使它运行。

为了使代码运行,您可能必须使该代码在其自己的线程中运行,并跳过一些箍以使这些调用正确运行,但这应该是可行的。

关于ios - 命令行C程序转Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34293161/

10-10 13:33