2013-05-16 3 views
2

В настоящее время я пытаюсь понять основы синтаксического анализа и написал этот код. Код очень прост. Я просто хочу написать программу, которая может делать разные задания с разными оценками. Я использую linux, и я запускаю код с благодарностью bash.Разбор аргументов

Этот код просто печатает «n печатается» с -n commmend и can not print «t напечатан» с -t commend. Я получаю «Опция требует аргумента -« t ». Как с этим справиться?

Мой второй вопрос - это разница между «nt:» и «n: t:». Когда я попробовал второй, я не получил ничего напечатанного в результате.

Заранее спасибо.

#include <unistd.h> 
#include <stdlib.h> 
#include <stdio.h> 

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

    opterr = 0; 


    while ((opt = getopt(argc, argv, "nt:")) != -1) { 
     switch (opt) { 
     case 'n': 
      printf("n is printed"); 
      break; 
     case 't': 
      printf("t is printed"); 
      break; 

    } 
    } 
} 

ответ

4

Когда вы «:» после символа, функция ожидает один (или более) аргументы, каждый из аргументов предшествует пробел.
Таким образом, вы должны ввести:

yourprogram -t yourargument 

Чтобы получить (ы) аргумент (ы) вы должны объявить:

extern char * optarg; 

, который будет содержать аргументы.

Пожелания, которые могут вам помочь,

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