Я проверяю, вводит ли пользователь правильный номер и тип аргументов cmd при вызове main.
Я подумал, что было бы неплохо написать функцию, которая выводит некоторый текст, чтобы я мог повторно использовать ее при проверке указателей NULL
. Я включил <errno.h>
.
void errcall()
{
perror("Error printed by perror()");
exit(EXIT_FAILURE);
}
Затем я написал функцию для проверки правильности и достаточности аргументов.
void err_cmd_handle(int argc_input)
{
if(argc_input==1 || argc_input>2)
errcall();
}
Когда я вызываю это в main, передавая int argc
в качестве аргумента err_cmd_handle()
, я получаю успех, даже если я не передал никаких аргументов, кроме запуска программы. Почему условие не проверяется правильно?
int main(int argc,char* argv[])
{
err_cmd_handle(argc);
return 0;
}
errno
может иметь полезное значение при вызовеerrcall
? - person rici   schedule 19.11.2019main()
, и ваше, я думаю, это как-то связано с тем, что мои функции неявны, или мои переменные находятся в неправильной области видимости, делают то, что вы на самом деле делаете, очень неясным. - person Andrew Henle   schedule 19.11.2019errcall()
- не очевидно, что ваш вопрос касается важных вещей последним. Однако bee clear errno не имеет отношения к вашей задаче, но вопрос о том, почему он возвращает успех, остается в силе. - person Clifford   schedule 19.11.2019errno
, то можно проверитьerrno
. Это не поддержка обработки ошибок общего назначения — она предназначена для сообщения об ошибках из стандартной библиотеки. - person Clifford   schedule 19.11.2019if(argc_input==1 || argc_input>2)
, по-видимому, терпит неудачу. На ваш вопрос нельзя ответить без дополнительной информации и расследования, потому что он неправдоподобен и, скорее всего, является ошибкой наблюдения. - person Clifford   schedule 19.11.2019errno
устанавливается после каждого вызова функции? - person Balázs Börcsök   schedule 19.11.2019