【发布时间】:2018-04-16 12:30:15
【问题描述】:
在我的代码中,我需要比较 2 个变量。一个变量是 int 数据类型,另一个是 varchar2 数据类型。
为了比较,我使用以下代码:
intVariable == atoi(varcharVariable.arr)
问题是当对应的 varchar 变量为空时 atoi 返回 0 这与我的业务逻辑冲突。
解决方法:改变条件如下:
intVariable == atoi(varcharVariable.arr) && strlen(varcharVariable.arr) != 0
请告知是否有更好/替代的方法。提前致谢。
最好的方法:
intVariable == atoi(varcharVariable.arr) && varcharVariable.arr[0] != 0x00
【问题讨论】:
-
varchar2不是 C 中的有效类型。我在某些关系数据库系统中看到过该名称的类型吗?请澄清。 -
@FelixPalmen 它是一个 pro*c 变量。无论如何,它的功能大部分与 variable.arr 部分的 char 变量相同。在这种情况下,您可以将其视为 char 变量本身。
-
所以它只是你在 C 中习惯的
char的标准数组?然后我会把这些其他的东西排除在外以避免混淆并创建一个好的minimal reproducible example -
我在我的beginners' guide away from scanf() 中有一些
strtol()的用法示例,第4 部分的结尾,也许它会有所帮助。 -
只有
strtol(),您不需要strlen(),只需在通话后检查endp != input && *endp == 0。这还将涵盖除空字符串之外的其他解析问题。
标签: c oracle-pro-c