Что не так с этим кодом? Ошибка сегментации: 11

Я получаю эту ошибку всякий раз, когда пытаюсь вызвать -u ex. "./Randoms -u 100"

Все остальные дела работают нормально. Почему это происходит? Как мне это исправить?

Я пытаюсь напечатать случайные числа между нижней границей -l и верхней границей -u. Все отправлено в качестве аргументов командной строки.

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <ctype.h>
    #include <string.h>
    #include <time.h>

    static char *prgn;

    int main(int argc, char *argv[])
    {
       srand(time(NULL));
      int randomnumber;
      int nums = 10;  
      int l = 1;
      int u = 100; 
      int c = 0;
      int error = 0;
      char *options = ":n:l:u";
      prgn = (char *)malloc(sizeof(char)*(strlen(argv[0])+1));
      strcpy(prgn,argv[0]);
      while ((c = getopt(argc,argv,options)) != -1) {
            if (c == '?') {
               c = optopt;
               printf("illegal option %c\n",c);
            } else if (c == ':') {
               c = optopt;
               printf("missing value for option %c\n",c);
            }
            else {
         switch (c) {
            case 'n':
               nums =  atoi(optarg);
               break;
            case 'u':
               u = atoi(optarg);
            break; 
            case 'l':
               l = atoi(optarg);
            break;
         }
      }
   }
       while (nums !=0){
                  randomnumber = l + rand() % (u - l);
                  printf("%d\n", randomnumber);
                  nums--;
         }
c = 0;
return 0;

}

1 ответ

Замещать

char *options = ":n:l:u";

от

char *options = "n:l:u:";
Другие вопросы по тегам