gpt4 book ai didi

c - 如何将带有空格和输入的参数计为 C 中的一个参数?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:05 26 4
gpt4 key购买 nike

我输入以下命令行:

./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;
}

注意:建议使用引号,但我不允许使用引号或任何其他符号。

最佳答案

使用

./file "-a 1" -b2 -a5 "-b 55" -b4

将“-a 1”作为第一个参数,将“-b 55”作为第四个参数。

如果现在允许使用引号,则可以使用以下命令转义 linux 中的空格:

./file -a\ 1 -b2 -a5 -b\ 55 -b4

关于c - 如何将带有空格和输入的参数计为 C 中的一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com