【问题标题】:I'm not entirely sure what's wrong with my code, my IDE gives me an error我不完全确定我的代码有什么问题,我的 IDE 给了我一个错误
【发布时间】:2014-12-09 03:53:15
【问题描述】:

我不完全确定我的代码出了什么问题,我不断收到关于第 11 行中的“c”的错误。我知道我的语法是正确的,而且我很确定我的逻辑是正确的,那么问题是什么问题?

#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int counter(char *, char);
int main()
{
   const int size = 51;
   char input[size];
   char consonants = { 'b''c''d''f''g''h''j''k''l''m''n''p''q''r''s''t''v''w''x''y''z'};
   cout << "Enter your letters." << endl;
   cin.getline(input, consonants);
   cout << consonants << "appears";
   cout << counter(input, consonants) << "times" << endl;
}

int counter(char *strPtr, char ch)
{
   int times = 0;
   while (*strPtr != '\0')
   {
      if (*strPtr == ch)
        times++;
      strPtr++;
   }
   return times;
}

【问题讨论】:

  • “我知道我的语法是正确的” - 确定吗?
  • 每当您提出编程问题时,请始终包含确切错误消息。编译器编写者为生成有用的诊断付出了很多努力。不要让他们的努力白费!
  • Jonathon 有一个很好的观点......不仅因为它可以帮助这里的人们诊断您的问题,还因为答案可以解释编译器错误如何试图向您解释问题 - 所以您将将来自己认识它,并更好地处理所有编译器消息的术语和观点。

标签: c++ string pointers character


【解决方案1】:

'b''c''d''f'... 不是有效的 C++。试试……

const char consonants[] = { 'b', 'c', 'd', 'f', ... };

...这-顺便说一句-您可以简化为:

const char consonants[] = "bcdf...";

(之后您将遇到其他问题...例如,您可以调用的 cin.getline() 重载是:

istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

...cin.getline(input, consonants); 不是有效调用,因为 consonants 不是 streamsize 值。

说实话,我什至无法想象您希望这段代码如何整体工作。如果您想使用counter 报告每个辅音的频率,您需要例如for 循环遍历 main() 中的那些辅音。)

【讨论】:

    【解决方案2】:

    应该是……

    char consonants = { 'b\'c'};
    

    但是如果你想创建一个char数组,它应该是

    char consonants[]  = {'b','c'};
    

    【讨论】:

      【解决方案3】:

      另外,您的电话:

      out << counter(input, consonants) << "times" << endl;
      

      将辅音传递给期望单个字符的第二个参数的函数。这是您传递的数组的地址 - 不是单个元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 2022-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多