Использование макросов getOpt с несколькими параметрами - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь использовать getotp для программы, которую мне нужно сделать для университета. Я использую Mac, и я думаю, что команда getopt на Mac и Linux не совпадают. В моем коде я хочу заполнить список файлов, если есть опция -f и если есть опция -t, на данный момент я просто хочу напечатать "chiffrement" (этот otpion позаботится о выборе, какойМетод шифрования Я хочу зашифровать файлы. Например: sha1, md5 ...) У меня проблема в том, что этот параметр равен только первому указанному параметру, который я выполнил. Я имею в виду, что если я выполню, выполнив ./myProg -f File1 File2 -t md5, моя переменная будет равна только f и никогда не будет t. Таким образом, я получаю список файлов, но не распечатываю "chiffrement"

У вас есть какое-нибудь решение?

мой код: '' 'int isf = 0;

    while ((option = getopt(NbArg, Argu, "f:t:")) != -1){
        printf("%c\n", option);
        switch (option){
            case 'f': 
                printf("blabla\n");
                isf =1;
                break;
            case 't':
                printf("chiffrement\n");
                break;
            default : 
                PrintError(Argu[0], "Options non valides");
        }

    }
    if (isf == 1){
        for (i = optind-1; i<NbArg; i++){
                    if (strcmp(Argu[i], "-t") == 0){
                        ListeFichiers[i-optind+1] = NULL;
                        break;
                    }
                    else{
                        printf("Argui: %s\n", Argu[i]);
                        ListeFichiers[i-optind+1] = Argu[i];
                    } 
                }
    }
    // -------------------------------> print la liste
       for (i=0; i<(NbArg-2); i++){
            if (ListeFichiers[i] == NULL){
                break;
            }
            printf(" liste fichier: %s\n", ListeFichiers[i]);
        }
      '''
...