Utiliser getopt en C avec des arguments sans option

Je suis en train de faire un petit programme en C qui traite avec beaucoup d'arguments de ligne de commande, j'ai donc décidé d'utiliser getopt faire le tri pour moi.

Cependant, j'en veux deux arguments sans options (fichiers source et destination) d'être obligatoire, de sorte que vous avez de les avoir comme arguments, tout en appelant le programme, même si il n'y a pas de drapeaux ou d'autres arguments.

Voici une version simplifiée de ce que j'ai à gérer les arguments avec des drapeaux:

while ((c = getopt(argc, argv, "i:d:btw:h:s:")) != -1) {
    switch (c) {
        case 'i': {
            i = (int)atol(optarg);
        }
        case 'd': {
            d = (int)atol(optarg);
        }
        case 'b':
            buf = 1;
            break;
        case 't':
            time = 1;
            break;
        case 'w':
            w = (int)atol(optarg);
            break;
        case 'h':
            h = (int)atol(optarg);
            break;
        case 's':
            s = (int)atol(optarg);
            break;
        default:
            break;
    }
}

Comment puis-je modifier cela pour que les non-arguments d'option sont également traitées?

Je veux aussi être capable d'avoir la non-options avant ou après les options, donc comment pourrait-il être géré?

source d'informationauteur Conor Taylor