使用终端而不是Xcode运行C脚本

时间:2013-02-11 15:16:50

标签: c xcode compiler-construction terminal user-input

目前我正在使用Xcode在我的mac上开发几个C程序。但是有一个问题。我的研究要求我通过编码使用某种输入字段。因此,例如,如果用户想要运行程序10次或希望程序创建10个答案。我正在使用“atoi(argv [1])”来获取用户的输入。

这正是问题所在。一旦我运行该程序,它就会开始出错,这是正常的,因为他正在等待输入而不是接收它或其他东西。无论如何,我试图通过以下链接解决此问题:How to run command-line application from the terminal?

遗憾的是,这也没有解决。我已经尝试重新安装xcode,因为在我的终端中输入gcc也不起作用,但每次应用程序商店自动为我安装它。

有没有人能解决我的问题。我非常感谢它,因为下周五我有另一个截止日期:(如果我的用户输入无效,我将无法获得足够的分数。

再次感谢您的帮助!

问候,

Kipt Scriddy

编辑:澄清问题。运行脚本时,我希望它在终端弹出,并且有一个输入字段需要输入。目前由于缺乏投入,他立即崩溃。他不是在等待从用户传递的论点。他正在跳过那部分

3 个答案:

答案 0 :(得分:3)

HOWTO从Xcode IDE传递程序的命令行参数

  1. 打开项目的有效方案。最简单的方法是从主菜单中进行。选择产品/计划/编辑方案...
  2. 在架构编辑器中,您会在左侧看到几个构建目标;你想要的是“Run YourProjectName”目标。选择它。
  3. 在右侧,您会看到四个子标签,包括“信息”,“参数”,“选项”和“诊断”。选择参数
  4. 添加/删除您需要的任何参数。在您的情况下,添加/phi作为第一个参数,然后10作为第二个参数。
  5. 值得注意的是:这也是您可以在启动时指定程序的当前工作目录的位置,而不是Xcode在构建二进制文件时使用的长临时路径。为此:

    1. 执行上述步骤1-2。
    2. 选择选项子标签
    3. 点击“使用自定义工作目录”复选框。
    4. 指定Xcode从中执行程序的完整路径。
    5. 结合在程序中修复参数处理,可以帮助您正常运行。

答案 1 :(得分:2)

听起来我想从命令行中获取你的参数,如果它们丢失了,请提示用户输入

让我们假设你想要参数:数字字数

#include <stdio.h>
#include <string.h>

int number1;
char word[128];
int number2;

int main(int argc, const char **argv)
{
    if (argc == 4)
    {
        number1 = atoi(argv[1]);
        strcpy(word, argv[2]);
        number2 = atoi(argv[3]);
    }
    else
    {
        do
            printf("Enter number word number: ");
        while (scanf("%d %s %d", &number1, word, &number2) != 3);
    }

    printf("I got %d '%s' %d\n", number1, word, number2);
    return 0;
}

给出了:

$ ./test
Enter number word number: 1 andy 12
I got 1 'andy' 12
$ ./test 2 pandy 56
I got 2 'pandy' 56

请注意,此示例中的错误检查很差,并且可以进行很多改进(不使用atoi()是一种启动方式)。

答案 2 :(得分:1)

听起来你需要在RageD指出的程序中检查argc,否则在启动参数不足的程序时会导致问题。

gcc是c编译器 - 它生成一个可执行文件。当您在Xcode中点击“运行”时,它会编译您的程序,然后运行创建的可执行文件。创建的可执行文件的名称与Xcode项目名称相同。

从命令行运行您在Xcode中构建的程序:

  • 在Xcode的项目导航器中,在“Products”文件夹中找到可执行文件
  • 将可执行文件拖到终端中(您将获得可执行文件的绝对URL)
  • 添加运行程序所需的任何参数
  • 点击进入!

结果将类似于下面的代码段(对于我的'MyCommandLineApp'项目):

$ /Users/pliskin/Library/Developer/Xcode/DerivedData/MyCommandLineApp-hbpuxhguakaagvdlpdmqczucadim/Build/Products/Debug/MyCommandLineApp argument1 argument2