错误:指针和整数之间的比较

时间:2014-04-28 22:57:15

标签: c

我正在尝试编写一个可以处理重定向的简单shell。但是,我得到“错误:指针和整数之间的比较”。我理解为什么我收到错误,但我不确定如何解决它。 args声明为:

static char* args[512];

这是我收到错误的代码:

if(args == '<'){
     int fd0 = open("input.txt", READ, 0);
     dup2(fd0, STDIN_FILENO);
     close(fd0);
}
if(args == '>'){
     int fd1 = creat("output.txt", 0644);
     dup2(fd1, STDOUT_FILENO);
     close(fd1);
}

错误在行中if(args =='&lt;')和if(args =='&gt;')

欢迎任何建议。

2 个答案:

答案 0 :(得分:1)

我假设args是一个指针char(char *)。 如果是这样,您将指针与单个字符进行比较。 你可以这样做:

if(args[0] == '>')
//then do something

答案 1 :(得分:1)

定义:

static char* args[512];

表达式args会生成char **,这就是为什么它抱怨与'<'int进行比较的原因。

假设您要检查整个字符串,在您的情况下正确的方法是:

if (strcmp (args[someIndex], "<") == 0) ...

其中someIndex指定要检查的数组元素。

还有可能你只想检查字符串的第一个字符(作为重定向操作类型的一部分,例如:<infile.txt),这将是:

if (args[someIndex][0] == '<') ...

但我认为这不太可能,因为你实际上没有使用参数的其余部分来打开文件(你使用固定值input.txt代替)。