使用指针将文本字符与单个字符进行比较

时间:2014-06-16 21:45:25

标签: c++ pointers comparison

我在将一串文字与单个字母进行比较时遇到问题,并计算字符串中有多少个字母。我只需要将单个字母与其匹配的大小写进行比较,例如字母" 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

有什么想法吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您尚未在text中分配用于存储字符串的空间。因此,您的程序会调用未定义的行为,并且您会得到意外的结果 将text声明为数组或动态分配内存。