gpt4 book ai didi

c - 在命令行中定义输入类型

转载 作者:行者123 更新时间:2023-11-30 19:37:03 24 4
gpt4 key购买 nike

我正在C中进行某个项目。到目前为止,我所做的是从命令行读取参数,而不是返回最小或最大数。例如:

./find -m -M 1 3 4 5
The smallest number is: 1
The biggest number is 5


我想做的是添加标志“ t”(在切换情况下为“ t”),因此当我运行脚本时,可以在整数和浮点数之间进行选择。例如:

./find -m -t float 1.2 4.5 1.9 2.3
The smallest number is: 1.2


或与整数相同的东西。

谢谢你的帮助。

简短格式的代码:

int main(int argc, char *argv[]){
int array[30];

int x = 0;
while ((x = getopt(argc, argv, "htm")) != -1 )
{
switch(x)
{
case 'h' :
printf("Help.\n");
break;
case 't':
break;
case 'm' :
for(int a = optind; a < argc; a++)
{
array[a] = atoi(argv[a]);
}
for (int i = optind; i < argc; i++)
{
for (int j = optind; j < argc - 1; j++)
{
if (array[j] > array[j + 1])
{
int temp = arrray[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
printf("The smallest one: %d\n", array[optind]);
break;
}
}
return 0;
}

最佳答案

一个非常快速的解决方案可能是这样的:

int type = 0;

// parse the arguments
if (argc > 1){
for (int i = 0; i < argc; i++){
if (!(strcmp(argv[i],'-t')))
if (!(strcmp(argv[i+1],'float')))
type = 1;
}
}


然后检查类型是否为0,使用int或为1,使用float。
它不是很漂亮,您当然需要进行一些检查,而不是盲目地使用argv [i + 1],但是它很容易编写并且可以正常工作(因为我写得很快,所以可能有一些错别字)

附言我从没使用过getopt,但是它可能会容易得多,因为您不需要使用strcmp

另外,该开关只能在char上使用,因此要在字符串上使用它,则必须在string [0]上使用它,但是您将接受以“ i”或“ f”开头的每个字符串,而不仅是“ int”和“浮动”

关于c - 在命令行中定义输入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40303457/

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