我正在尝试在 C 中打开(并同时创建)一个文件,使用字符数组作为我传递的路径名,该路径名存储在节点结构中。当我这样做时,它会在文件名上附加一个问号。
指定文件名的数组定义如下:
#define MAX_LENGTH 1024
typedef struct node {
...
char input[MAX_LENGTH]; // filename
...
}
当我最初将程序名称放在节点结构中时,我使用 makeargv 和 strcpy 如下:
char **strings;
makeargv(s,":",&strings);
strcpy(n->input,strings[2]);
当我打开文件时,我尝试将标准输入重定向到它,如下所示:
char **argumentList;
makeargv(nodes[i]->prog," ",&argumentList);
if (strcmp(nodes[i]->input, "stdin") != 0) {
char* input = nodes[i]->input;
int in = open(input, O_RDONLY);
dup2(in, 0);
int cl = close(in);
...
}
我无法理解这是否与我传递路径名的方式、重定向到标准输入的尝试或其他原因有关,并且我无法弄清楚到底是什么问题..有人能指出我在正确的方向上为什么会发生这种情况?