Что не так с этим кодом? Ошибка сегментации: 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:";