【问题标题】:Strcmp pointer from integer without cast来自整数的Strcmp指针,没有强制转换
【发布时间】:2011-05-08 22:16:42
【问题描述】:

我正在尝试比较两个字符,看看哪个是字典顺序较长并按它排序的问题是我不知道如何比较单个字符我尝试使用 strcmp 进行比较

struct example
{
 char code;
}
if (strcmp(i->code, j->code) < 0)
    return 1;

警告:传递 âstrcmpâ 的参数 1 使指针从整数而不进行强制转换

警告:传递 âstrcmpâ 的参数 2 使指针从整数而不进行强制转换

我知道 strcmp 是用于字符串的,我应该只是 malloc 并将 char 代码转换为字符串,还是有其他方法来比较单个字符?

【问题讨论】:

  • if(i->code code) /* 如果你只比较一个字符,你可以只比较字符 */
  • 您希望大小写有意义吗?在比较值之前,您可能需要使用tolower() 或相关函数之一。

标签: c character


【解决方案1】:

char 是整数类型。

您使用关系运算符和相等运算符(&lt;== 等)比较 char 对象。

【讨论】:

    【解决方案2】:

    strcmp() 采用 以空字符结尾的字符串,因此在 C 中为 char *。您传递给它一个字符,char。这个字符在表达式中自动提升为int(这总是发生在C 中的表达式中的char),然后这个int 被尝试更改为char*。感谢上帝,这失败了。

    改用这个:

    if (i->code < j->code)
    

    【讨论】:

      【解决方案3】:

      由于您要比较的是字符而不是以空字符结尾的字符串,请执行以下操作:

      if (i->code < j->code)
      

      【讨论】:

        【解决方案4】:

        试试

        if (i->code < j->code)
            ...
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多