【问题标题】:Comparing blank varchar variable with int variable将空白 varchar 变量与 int 变量进行比较
【发布时间】: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


【解决方案1】:

最佳方式:

intVariable == atoi(varcharVariable.arr) && varcharVariable.arr[0] != 0x00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2020-10-20
    • 2020-02-08
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多