【发布时间】:2019-05-11 09:23:24
【问题描述】:
在我的程序中,我得到了 2 个路径,一个是包含各种文件的目录的路径。 每当我找到一个 c 文件时,我都会编译它。 第二个路径是输入 txt 文件。 让我们这样说:
home/dvir/workspace/assignment1/students/ -(directory)
home/dvir/workspace/tests/input1.txt/ -(input txt file)
这是我的代码的一部分:
void listdir(const char *name, int indent)
{
char path[80];
char cmd[4096 + 2*80];
DIR *dir;
struct dirent *entry;
if (!(dir = opendir(name)))
return;
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
char path[1024];
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
printf("%*s[%s]\n", indent, "", entry->d_name);
listdir(path, indent + 2);
} else {
printf("%*s- %s\n", indent, "", entry->d_name);
snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
snprintf(cmd, sizeof(cmd), "gcc -c %s -o %s.o", path, path);
if (system(cmd) == 0) {
printf("Compiled %s to %s.o\n", path, path);
}
}
}
closedir(dir);
}
它递归遍历目录并编译所有文件,我将 input.txt 目录保存在 char 数组中并将其称为输入。 现在让我们假设我编译了一个 c 程序并获得了 ashly.c.o 文件。 如何使用 txt 文件作为输入运行该程序?(以及如何实际访问该编译程序?) 例如: 假设 ashly.c.o 从用户那里获得 2 个数字并将它们相乘。 我想使用 input.txt 文件作为这两个数字 并将输出保存为一个新的 txt 文件。(以便我以后可以阅读) 我找到了一些 ofthis 的答案,但在我的情况下,我不想使用 freopen() 函数(只是打开),我需要一种从我的程序访问编译文件的方法...... 任何帮助将不胜感激。
【问题讨论】:
标签: c file compilation operating-system system-calls