gpt4 book ai didi

检查 char* 是否为小于 0 的数字

转载 作者:行者123 更新时间:2023-11-30 20:16:51 24 4
gpt4 key购买 nike

我有一个函数,当 char* 是数字时返回 true,当它不是数字时返回 false

这是代码:

int isNumber(char* s) {
if (*s == '\0') return 0;
while (*s) {
if (!isdigit(*s)) return 0;
s++;
}
return 1;
}

但是当我输入“-5”时会发生什么?它是一个数字,但函数返回 false。我应该如何修改这个函数?

最佳答案

您的代码仅适用于整数。

如果数字包含符号或小数点,则失败。

如果数字包含符号,则它必须是字符串中的第一个字符。因此,在进入 while 循环之前,请检查字符串中的第一个字符是否是“+”或“-”,如果是,则在 while 循环中忽略它。

if (*s == '+' || *s == '-') ++s;

要扩展包含小数点的数字的代码,请添加一个限制“.”出现的标志。仅在字符串中出现一次。

int decimalPointFound = 0; // Decimal point not found yet

并在 while 循环的开头添加以下代码,该代码在检查字符是否为数字之前处理小数点

if (*s == '.')

{

if (decimalPointFound) return 0; // Invalid number if there are more than one '.'

decimalPointFound = 1; // Update the flag since you have found a '.'

}

我希望这能为您的功能提供一些灵 active 。还有很多情况需要考虑,例如前导空格、尾随空格、指数表示法、复数等。根据数字的域,修改此基本代码模板。

顺便说一下,您可能有兴趣研究一些内置的 functions从而实现您的任务。

关于检查 char* 是否为小于 0 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59824935/

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