2015-04-26 7 views
0

Я разбираю параметры, переданные программе. Я хотел бы:Что такое хорошая практика при анализе параметров программы в C

  1. не делать ничего особенного, если нет параметров

  2. набор flag 1, если передается только -k в качестве аргумента

  3. вызов ignore() функцию, если там, где любой параметры, отличные от -k


Правильный ли код ниже? Может ли это быть imporved для соответствия стандартам и рекомендациям по эффективной практике?

int flag = FALSE; 
    if (argc == 2 && strcmp(argv[1], "-k") == 0) 
    flag = TRUE; 
    else if (argc >= 2) 
    ignore(); 
+0

Удалить макросы, они не полезны. Рассмотрим случай, когда имеется ровно один параметр, но это не '-k'. Правильно ли ваш код? – Mat

+1

'getopt' - это стандартный способ сделать это в UNIX-подобных системах. – Teyras

+0

Существует множество разделов для анализа аргументов. Рассмотрим 'argv_parse' и' libpopt'. –

ответ

2

Следующая программа показывает, как можно использовать Getopt:

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#define TRUE 1 
#define FALSE 0 

void ignore() { 
    printf("Ignore\n"); 
} 

int main(int argc, char **argv) { 
    if(argc <= 1) { 
    printf("Do nothing\n"); 
    return 0; 
    } else if(argc > 2) { 
    ignore(); 
    } else { 
    int c, flag; 
    flag = FALSE; 
    while((c = getopt (argc, argv, ":k")) != -1) { 
     switch(c) { 
     case 'k': 
    flag = TRUE; 
    break; 
     default: 
    ignore(); 
    break; 
     } 
    } 
    printf("Flag = %d\n",flag); 
    return 0; 
    } 
} 
+3

'getopt' не входит в стандартную библиотеку C, но поставляется с POSIX. –