【发布时间】:2023-04-08 20:22:02
【问题描述】:
两部分问题;
我来自高级语言,所以这是一个关于形式而不是功能的问题;
我编写了一个 isnumeric() 函数,它接受一个 char[] 并在字符串是数字时返回 1,这利用了 ctype 中的 isdigit() 函数。其他语言内置了类似的功能,我一直使用类似的功能在将数据转换为数字类型之前对其进行完整性检查。主要是因为如果您尝试将非数字字符串转换为整数,某些语言转换函数会失败。
但似乎不得不进行所有循环以弥补 C 中缺少字符串的问题,这是问题的第一部分;
在 C 中捕获 atoi() 返回 0 来代替在调用 atoi() 之前对数据进行完整性检查是否可以接受? atoi()(和其他 ascii 到 xx 函数)的工作方式似乎很适合完全消除完整性检查。跳过检查肯定会更有效。
问题的第二部分是; 是否有用于数字完整性检查的 C 函数或公共库函数 在一个字符串上? (通过字符串,我当然是指 char[])
【问题讨论】:
-
I've witten an isnumeric() function.以is开头的标识符被保留。良好的编码习惯意味着您避免使用它们。 -
由于多种原因跑题了。
-
你关心数字字符串是否可以用 int 表示吗?还是只想知道字符串是否只包含十进制数字?
-
关闭选民:第二个问题“是否有用于对字符串进行数字完整性检查的 C 函数或通用库函数?”肯定不是意见基础:
strtol() strtod(), strtoull() .... (8+ functions) -
@jxh 我正在寻找一种方法来确定字符串是否仅包含基数 10 位数字或小数点或逗号。因此,如果字符串为 100,000.01,我希望 func 获得正回报。字符串中任何位置的任何其他 ascii 字符都将导致负返回值。
标签: c design-patterns error-handling