gpt4 book ai didi

c - 如何在 C 中获取命令行参数并评估为 int 或 double 时检查边缘情况?

转载 作者:行者123 更新时间:2023-12-04 10:07:39 26 4
gpt4 key购买 nike

所以我有一个作业要弄清楚命令行上的数字是整数还是 double 。

我主要通过以下方式弄明白了:

sscanf(argv[x], "%lf", &d)

其中“d”是 double 。然后我将它转换为一个 int,然后用它自身减去“d”来检查它是否是 0.0。

d - (int)d == 0.0

我的问题是如果命令行参数包含在技术上可以归类为整数的 double 值。

我需要将 3.0 分类为 double,而我的解决方案将其视为 int。例如初始化程序。

a.out 3.0

我需要它来打印

"3.0 is a double"

但是现在变成了

"3 is an int." 

检查这个的方法是什么?我确实四处寻找类似的问题,这让我找到了当前的解决方案,但我不知道如何解释这个边缘案例。

谢谢。

最佳答案

比如这样的方式:

#include <stdio.h>

int main(int argc, char *argv[]){
if(argc != 2){
puts("Need an argument!");
return -1;
}

int int_v, read_len = 0;
double double_v;
printf("'%s' is ", argv[1]);
//==1 : It was able to read normally.
//!argv[1][read_len] : It used all the argument strings.
if(sscanf(argv[1], "%d%n", &int_v, &read_len) == 1 && !argv[1][read_len])
puts("an int.");
else if(sscanf(argv[1], "%lf%n", &double_v, &read_len) == 1 && !argv[1][read_len])
puts("a double.");
else
puts("isn't the expected input.");
}

关于c - 如何在 C 中获取命令行参数并评估为 int 或 double 时检查边缘情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250408/

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