我不完全确定我的代码有什么问题,我的IDE给了我一个错误

时间:2014-12-09 03:53:15

标签: c++ string pointers character

我不完全确定我的代码有什么问题,我不断收到有关“c'在第11行。我知道我的语法是正确的,我非常确定我的逻辑是正确的,那么问题是什么?

#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;
}

3 个答案:

答案 0 :(得分:4)

'b''c''d''f' ...无效的C ++。尝试...

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

... - BTW - 您可以简化为:

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()中的辅音进行{{1}}循环。)

答案 1 :(得分:0)

应该是......

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

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

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

答案 2 :(得分:0)

另外,您致电:

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

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

相关问题