【发布时间】:2012-01-11 05:30:22
【问题描述】:
我有这个 C 程序,它从用户那里获取输入并将其发送到一个方法:
#include <stdio.h>
#include <string.h>
#include "constants.h"
#include "lines.h"
#include "compare.h"
//gets arguments and sends to compare.c
int main() {
int op = 1;
char filename[20];
scanf("%d ", &op);
gets(filename);
if ((char) op + '0' < 49 || (char) op + '0' > 57) {
printf("Error: Invalid input");
exit(0);
}
readstdin(filename, op);
return 0;
}
但不是执行程序并从标准输入读取,我希望它从 unix 终端读取,以便:
./sort [field] < input_file
将读入文件。 ([field] 是选项,如果没有输入,默认为 1)。
例如,在 UNIX 中执行 C 程序的命令如下所示:
./sort 1 < test.txt
我该怎么做?
非常感谢任何帮助 谢谢!
【问题讨论】:
-
您要单独传递文件名还是从命令行传递完整数据?
-
命令行中的文件名和字段,但我希望文件名和字段作为单独的值
-
然后只使用命令行参数。在 main() 中使用 argc & argv
-
AusCBloke 绝对符合您想要实际完成的任务的描述。如果您像最初设想的那样使用重定向,则该文件的内容将通过管道传输到程序。我的任务是教授想要一个交互式程序,但给了我们一个带有空格分隔输入的文件,因此我们可以使用这样的重定向,从程序的角度来看,与用户手动输入文件内容没有区别.与这种情况无关,但可能很高兴知道它的可能性。
-
非常感谢 matt 的输入
标签: c unix input terminal redirect