Я ввожу следующую командную строку:
./file -a 1 -b2 -a5 -b 55 -b4
Вывод, который я получаю:
a: 1
argv[1]: -a
b: 2
argv[2]: 1
a: 5
argv[3]: -b2
b: 55
argv[4]: -a5
b: 4
argv[5]: -b
Counter: 5
Результат, который я хочу получить, должен быть:
a: 1
argv[1]: -a 1
b: 2
argv[2]: -b2
a: 5
argv[3]: -a5
b: 55
argv[4]: -b 55
b: 4
argv[5]: -b4
Counter: 5
Аргументы с пробелом в настоящее время считаются как 2 аргумента. Я хотел бы, чтобы моя программа учитывала его только как 1 аргумент (я хочу, чтобы он видел «-a 1». Не «-a» и «1» отдельно).
Это исходный код, который я использую, я получаю результаты:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
int main(int argc, char *argv[])
{
int opt = 0;
int quantum1 = 0, quantum2 = 0;
int counter = 0;
while ((opt = getopt(argc, argv,"a:b:")) != -1)
{
switch (opt)
{
case 'a' :
quantum1 = atoi(optarg);
printf("a: %d\n", quantum1);
break;
case 'b' :
quantum2 = atoi(optarg);
printf("b: %d\n", quantum2);
break;
default:
printf("Error\n");
return 1;
break;
}
counter++;
printf("argv[%d]: %s\n", counter, argv[counter]);
}
printf("Counter: %d\n", counter);
return 0;
}
Примечание. Предлагаемые кавычки работают, но мне не разрешено использовать кавычки или любые другие символы.