C中的简单重定向

时间:2013-10-17 13:45:01

标签: c osx-mountain-lion io-redirection

我是初学者,只是在OSX中学习Xcode 5中C的基础知识。我在课程中收到了一个作业,用于将信息(与程序相关的值)从输入文件(input.txt)重定向到一个简单的程序,然后在第二个文件(output.txt)中显示结果。

以下是该计划的副本:

#include <stdio.h>

#define NIS_PER_LITER 5.37

int main()
{

    double speed, hrs, km_per_liter;
    double liters, cost;

    printf("Enter driving time in hrs: ");
    scanf("%lf", &hrs);
    printf("Enter driving speed in kph: ");
    scanf("%lf", &speed);
    printf("Enter km per liter: ");
    scanf("%lf", &km_per_liter);

    liters = hrs * speed / km_per_liter;
    cost = liters * NIS_PER_LITER;

    printf("Your driving cost is %lf NIS\n", cost);

    return 0;
}

我已经尝试在Xcode和终端中使用:command < input.txt > output.txt。在Xcode中,这会导致输出行显示:

Enter driving time in hrs: command <input.txt
Enter driving speed in kph: 
Enter km per liter:
Your driving cost is nan NIS
Program ended with exit code: 0

在终端中它什么也没做。 我也尝试将输入/输出文件放在DerivedData内,但这没有帮助......

任何建议都是巨大的。

1 个答案:

答案 0 :(得分:1)

我认为你应该做的事情:

如果是在Linux操作系统上,您的I / O应该通过使用类似

的方式重定向
  

bash-4.1 $ cat input.txt | yourbinary&gt; output.txt的

也许事情可能不会按照你的意愿发生。 首先是input.txt的内容是什么? 如果听起来像这样:

2.3
100.00

最好阅读程序中的文件。 如果你想要不同的东西,可以使用linecommand参数,它们看起来像这样:

  

bash-4.1 $ ./command --speed = 100.00 --kmperliter = 12

您还可以使用printf从应用程序内部打印到标准输出。如果这样做,命令行调用将如下所示:

  

bash-4.1 $ ./command --speed = 100.00 --kmperliter = 12&gt; output.txt的

我希望它很有用