目前我正在使用Xcode在我的mac上开发几个C程序。但是有一个问题。我的研究要求我通过编码使用某种输入字段。因此,例如,如果用户想要运行程序10次或希望程序创建10个答案。我正在使用“atoi(argv [1])”来获取用户的输入。
这正是问题所在。一旦我运行该程序,它就会开始出错,这是正常的,因为他正在等待输入而不是接收它或其他东西。无论如何,我试图通过以下链接解决此问题:How to run command-line application from the terminal?
遗憾的是,这也没有解决。我已经尝试重新安装xcode,因为在我的终端中输入gcc也不起作用,但每次应用程序商店自动为我安装它。
有没有人能解决我的问题。我非常感谢它,因为下周五我有另一个截止日期:(如果我的用户输入无效,我将无法获得足够的分数。
再次感谢您的帮助!
问候,
Kipt Scriddy
编辑:澄清问题。运行脚本时,我希望它在终端弹出,并且有一个输入字段需要输入。目前由于缺乏投入,他立即崩溃。他不是在等待从用户传递的论点。他正在跳过那部分
答案 0 :(得分:3)
HOWTO从Xcode IDE传递程序的命令行参数
/phi
作为第一个参数,然后10
作为第二个参数。值得注意的是:这也是您可以在启动时指定程序的当前工作目录的位置,而不是Xcode在构建二进制文件时使用的长临时路径。为此:
结合在程序中修复参数处理,可以帮助您正常运行。
答案 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中构建的程序:
结果将类似于下面的代码段(对于我的'MyCommandLineApp'项目):
$ /Users/pliskin/Library/Developer/Xcode/DerivedData/MyCommandLineApp-hbpuxhguakaagvdlpdmqczucadim/Build/Products/Debug/MyCommandLineApp argument1 argument2