Код: Выделить всё
int update_param(int argc, char** argv, parameters& par)
{
int oc;
char *b_opt_arg;
while( oc = getopt(argc, argv, ":o:i:t:") != -1)
{
fprintf(stderr,"%d %d %d %d\n",oc,'o','i','t');//Печать значения опции и её ожидаемых значений
switch (oc)
{
//Установка выходного файла
case 'o': fprintf(stderr,"option %c value %s\n", oc, optarg);
break;
//Установка входного файла
case 'i': fprintf(stderr,"option %c value %s\n", oc, optarg);
break;
//Установка числа иттераций
case 't': fprintf(stderr,"option %c value %s\n", oc, optarg);
break;
case ':': fprintf(stderr,"case :\n");
break;
case '?': fprintf(stderr,"case ?\n");
default: fprintf(stderr,"default \n");
}
}
exit(0);
}При таком запуске "proba -o output_file -i input_file -t 1000" выдаёт вывод
Код: Выделить всё
1 111 105 116
default
1 111 105 116
default
1 111 105 116То есть значение опции почему то не читается в oc, вместо него записывается единица, и естественно идет обработка по умолчанию. В то же время число опций определяется правильно.