我在将一串文字与单个字母进行比较时遇到问题,并计算字符串中有多少个字母。我只需要将单个字母与其匹配的大小写进行比较,例如字母" z"匹配" z",但" z"不匹配" Z"。这是我到目前为止所得到的:
/**********************************************************************
* compares the letter to each letter in the string of text and counts the
* number of the matching letters
***********************************************************************/
int countLetters(char letter, char * text)
{
int count = 0;
for (char * p = text; *p; p++)
{
if (letter == *p)
{
count++;
}
}
return count;
}
/**********************************************************************
* Prompts the user for a line of input, calls countLetters(), and displays
* the number of letters.
***********************************************************************/
int main()
{
char letter;
char text;
int count = 0;
char * pText;
cout << "Enter a letter: ";
cin >> letter;
cout << "Enter text: ";
cin.ignore(2);
cin >> text;
pText = &text;
count = countLetters(letter, pText);
cout << "Number of '" << letter << "'s: " << count << endl;
return 0;
}
这是我运行代码时的样子:
Enter a letter: z
Enter text: There are no Z's here
Number of 'z's: 1
这是我在运行代码时期望发生的事情:
Enter a letter: z
Enter text: There are no Z's here
Number of 'z's: 0
有什么想法吗?任何帮助将不胜感激。
答案 0 :(得分:3)
您尚未在text
中分配用于存储字符串的空间。因此,您的程序会调用未定义的行为,并且您会得到意外的结果
将text
声明为数组或动态分配内存。