我不完全确定我的代码有什么问题,我不断收到有关“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;
}
答案 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;
将辅音传递给期望单个字符的第二个参数的函数。这是您传递的数组的地址 - 不是单个元素。