【问题标题】:Invalid conversion from 'char' to 'char*'从 'char' 到 'char*' 的无效转换
【发布时间】:2017-04-22 17:55:02
【问题描述】:

我正在制作一个将单数名词转换为复数名词的程序。我对编码非常陌生,并且在代码的第 44 行不断收到错误消息,即我进行了“从 'char' 到 'char* 的无效转换”。此外,在第 41 行,我得到“从 'char' 到 'const char* 的无效转换”。我不完全确定这意味着什么或如何解决?我正在使用带有 C++ 的 NetBeans,这里是代码:

    #include <stdio.h>
    #include <string.h>



    #define max_word 20



    void pluralize (char word[]);


    int main (void)
    { 
      char noun[max_word];   /* stores temporary word entered by user */

      printf("Enter a noun in singular form: ");
      scanf("%s", noun);

      while (strcmp(noun, "done") != 0)
     {
        pluralize (noun);
        printf("The plural form is %s\n", noun);
     }
    }

    void pluralize (char word[])
    {
      int length;
      char noun;
      length=1;
      length = strlen(word);

    for (;;) 
    {
        printf("Enter a noun in singular form: ");
        scanf("%s", noun);

        if ((strcmp( noun, "done") == 0))
            break;

        pluralize (noun);
        printf("The plural form is %s\n", noun);
    }
      return;
    }

【问题讨论】:

  • 这不是 C++,而是 C。请相应地标记您的问题。
  • @DanielKamilKozar 糟糕,我刚刚删除了 C 标记,因为“我正在使用带有 C++ 的 NetBeans”。对我来说,这看起来像是有效的 C++。
  • 那么,我们应该如何知道第 44 行是什么?您希望我们数行吗?
  • char noun[max_word]; 在一个函数中与 char noun; 在另一个函数中。找出差异。
  • @Etienne OP 明确指出这是一个 C++ 程序,无论成语如何。请不要接受错误的编辑。谢谢。

标签: c++ char


【解决方案1】:

在复数函数中,名词是一个字符,表示一个字符。你想要一个 char 数组,就像你的 main 一样:

char noun[max_word];

这编译没有错误。

【讨论】:

  • 这个答案大部分是正确的,除了 char* 必须初始化为指向某个缓冲区。 OP 实际上应该使用std::string,因为(尽管愚蠢的主持人强迫 OP 错误地更改问题标签)他们正在编写 C++。
  • @BoundaryImposition 我删除了我的 cmets,因为它们不再适用并且答案已修复。
  • @BoundaryImposition 好吧,我想你不知道数组和指针的区别是什么。
  • @BoundaryImposition 呵呵。我们可能正在互相交谈。我只是不知道分裂在哪里。
  • @melpomene:好吧,现在没关系了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多