【问题标题】:Why I got this error passing a array element to crypt()为什么我在将数组元素传递给 crypt() 时出现此错误
【发布时间】:2018-05-10 22:57:33
【问题描述】:

我收到了 2 条代码错误消息,我试图自己在网上搜索,但没有帮助。消息是这样的:

错误:不兼容的整数到指针转换将“char”传递给“const char *”类型的参数;用 & [-Werror,-Wint-conversion] 获取地址 strcpy(genHash,crypt(字母[i], "abc"));

另一个是相同的消息,但用于passW[0]。我只是想了解发生了什么。我将不胜感激任何帮助。此外,如果有人可以推荐一个关于 char 数组的好讲座,使用指针的 char 数组。谢谢

【问题讨论】:

  • 投反对票:我们很难确定错误的来源。将整个段落作为链接也具有破坏性。相反,将源代码作为文本发布,您还可以提供指向您当前链接发布到的照片的链接。
  • 该错误意味着您尝试在函数需要字符串(多个字符的数组)的地方传递单个字符。你知道C语言中字符和字符串的区别吗?
  • 您好,请尝试阅读其他一些问题,以查看有关如何提出问题的一些示例。以这种形式,这个问题可能很快就会结束。
  • 欢迎来到 Stack Overflow!将您的代码发布为纯文本,而不是图像。有关代码格式化帮助,请参阅 stackoverflow.com/help/formatting

标签: c crypt


【解决方案1】:

当您调用函数并传递letters[i]passW[0] 时,您传递的是单个字符。但听起来这些函数需要整个字符串,即字符数组。

可能可以通过 letters 而不是 letters[I]passW 而不是 passW[0] 而逃脱。 (但很难确定,因为您没有向我们展示您的代码。)

【讨论】:

    【解决方案2】:

    如果您想了解 char 数组和 char 数组指针,那么您应该获取 Kernighan 和 Richie 的《C 编程语言》的副本。它有一整章。总的来说,这也是对 C 的出色参考。

    Char 变量实际上是 C/C++ 中的无符号 8 位(1 字节)整数。它们的值从 0 到 255。当您在 C/C++ 中使用 fputs() 或其他打印函数时,这些整数值将根据您选择的字符/类型集转换为字符。

    您是否检查过 crypt() 返回的输出类型?如果您使用的是真正的 GNU 编译器,那么您可以使用 typeof() 函数/运算符来检查输出。或者您可以在头文件中查找 crypt() 的定义。导致问题的可能不是 crypt 的输入。它可能是在 strcpy() 中嵌套 crypt() 而没有适当的演员表。

    【讨论】:

    • 非常感谢!这很有帮助。这两个观察都给出了开始解决这个问题的新点。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2014-12-10
    • 2021-06-03
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多