ошибка: сравнение между указателем и целым числом

Я пытаюсь написать простую оболочку, которая может обрабатывать redirect. Однако я получаю «ошибку: сравнение между указателем и целым числом». Я понимаю, почему я получаю сообщение об ошибке, но я не уверен, как это исправить. args объявляется как:

static char* args[512]; 

Это код, в котором я получаю сообщение об ошибке:

 if(args == ''){ int fd1 = creat("output.txt", 0644); dup2(fd1, STDOUT_FILENO); close(fd1); } 

Ошибка в строке if (args == ”)

Любые предложения приветствуются.

Я предполагаю, что args является указателем char (char *). Если это так, вы сравниваете указатель с одиночным символом. Вы можете сделать это следующим образом:

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

С определением:

 static char* args[512]; 

выражение args будет генерировать char ** , поэтому он жалуется на сравнение с '<' , int .

Правильный подход в вашем случае, если вы хотите проверить всю строку, будет:

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

где someIndex указывает, какой элемент массива вы хотите проверить.

Также есть вероятность, что вы хотите просто проверить первый символ строки (как часть типа перенаправления, например: ), который будет:

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

но я считаю, что маловероятно, что вы фактически не используете остальную часть аргумента для открытия файла (вместо этого вы используете фиксированное значение input.txt ).