我试图在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]);
当我打开文件时,我尝试将stdin重定向到它,如下所示:
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);
...
}
我无法理解它是否与我传递路径名的方式有关,尝试重定向到stdin,或其他什么,而我无法确定问题究竟是什么。有没有人能指出我为什么会这样做?
答案 0 :(得分:0)
您没有包含用户输入输入的代码。确保它正确传递输入 - 检查字符串末尾的任何非图形字符,并确保字符串以空字符结束。