2013-09-05 2 views
-1

Как сделать это требование для передачи параметров во время выполнения программы через терминал Linux?Разрешение параметров, заданных в терминале для программы на языке C

Это, в частности, C.

Чтобы лучше объяснить .. В терминале, мне нужно, чтобы иметь возможность запускать программу как так

./ программаИМЯ_ФАЙЛАsecondParameter

необходимо также, чтобы вернуть сообщение об ошибке для этого, если параметры не заданы, а затем прекратить выполнение программы.

Я могу дать больше информации в случае необходимости, кажется довольно простым вопросом.

+1

узнайте о 'main()' синтаксис 'main (int argc, char * argv [])' –

+1

@GrijeshChauhan: Вы имеете в виду 'int main (int argc, char * argv [])'. Или, что то же самое, но яснее: 'int main (int argc, char ** argv)' –

+1

Посмотрите 'argc' и' argv' в индекс вашего учебника C. –

ответ

4

Простая проверка на argc может делать то, что вы ищете:

int main(int argc, char *argv[]) 
{ 

    if(argc != 3) 
    { 
    printf("Usage error. Program expects two arguments. \n"); 
    printf("Usage: ./program FILENAME secondParameter \n"); 
    exit(1); 
    } 
/* Rest of your code */ 

} 

Вы должны узнать об аргументах, проходящих в main() в С. argv[0] это название программы и, следовательно, условие argc != 3 т.е. если вы даете меньше или больше двух аргументов, вы получите ошибку использования.

+0

Ах ладно. Прошло несколько месяцев с тех пор, как я написал любой код, поэтому я немного ржавый. Можно ли использовать perror(), чтобы вернуть сообщение об ошибке, сгенерированное без ввода типичного сообщения об ошибке? Мне было сказано использовать perror и errno для ошибок. – m96

+1

perror извлекает сведения об ошибке из 'errno' из' 'о сбоях системного вызова/библиотечного вызова. Ваш не такой сбой, а определяемая пользователем ошибка, которая не будет устанавливать никаких «errno», если вы не установите ее самостоятельно (что я не рекомендую для того, что вы делаете). 'perror' не может волшебно ожидать узнать о пользовательской ошибке использования. Поэтому я бы не предложил использовать perror. –

Смежные вопросы