我輸入以下命令行:如何用空格和輸入作爲C中的一個參數進行計數?
./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;
}
注:引號建議的工作,但我不能使用引號或任何其他符號。
它的工作原理,但我不允許使用引號。 –
我不允許使用反斜槓或任何其他符號。它必須是選項(-a)和輸入(1)。 –
如果您不允許使用單引號,雙引號或轉義字符,我不認爲您可以讓程序將'-a 1'作爲單個參數。 –