【问题标题】:Char to Char* Error Message字符到字符* 错误消息
【发布时间】:2015-01-22 21:07:25
【问题描述】:

每次我尝试编译我的程序时,都会收到 Char to Char* 编译错误...我在 C 中执行此操作。这是我的代码:

int my_strcmp(char s1[], char s2[]) {
  int i;
  for (i=0; i != '\0'; i++)
    if (my_strcmp(s1[i], s2[i]) == 1)
      return 1;
    else if (my_strcmp(s1[i], s2[i]) == -1)
      return -1;
    else
      return 0;

【问题讨论】:

  • 欢迎来到 SO。请显示COMPLETE代码和具体错误等。
  • 你为什么要递归地调用my_strcmp?无论如何,签名采用char[],但您在递归调用中将char 传递给它。我也怀疑您是否要检查 i == '\0' 是否作为循环终止条件。
  • 更改代码后问题:编译器是正确的。,您正在使用一个名为s的变量,但它从未被声明过。
  • 与其将您的问题修改为(相对)新问题,不如发布一个新问题。如果到目前为止的答案令人困惑,请发表评论以要求澄清。

标签: c compiler-errors


【解决方案1】:
  • s1 的类型为 char *
  • 因此,s1[i] 的类型为 char
  • my_strcmp() 需要两个 char * 变量作为参数。
  • 您将s1[i](我们刚才说是char)作为参数之一传递。
  • charchar * 是不同的类型。

【讨论】:

    【解决方案2】:

    您的函数my_strcmp 被声明为使用字符数组作为输入参数(char* 或等效的char[]),而在if (my_strcmp(s1[i], s2[i]) == 1) 行中,此函数使用字符s1[i]s2[i] 调用。因此编译器抱怨charchar* 的转换。

    【讨论】:

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